我必须创建一个函数,根据使用OOP的其他变量的值为变量赋值。我在构造函数类中创建了这个函数(calculaIMC),为了实现这个功能,我使用了一个数组($ imc_arr)。我意识到我的代码可能看起来很麻烦甚至不合适,但它是一个旨在教授特定事物的单一练习。这就是我到目前为止所提出的:
<?php
class CalculoIndice{
...
public $imc_arr = array(
'Magreza grave',
'Magreza moderada',
'Magreza leve',
'Saudável',
'Sobrepeso',
'Obesidade Grau I',
'Obesidade Grau II (severa)',
'Obesidade Grau III (mórbida)');
function CalculoIndice(){
$this->preparaCalculo();
$this->calculaIMC();
}
function preparaCalculo(){
...
}
function calculaIMC(){
switch ($this->imc) {
case ($this->imc < 16):
$this->imc_cat = $this->imc_arr[0];
break;
case ($this->imc < 17):
$this->imc_cat = $this->imc_arr[1];
break;
case ($this->imc < 18.5):
$this->imc_cat = $this->imc_arr[2];
break;
case ($this->imc < 25):
$this->imc_cat = $this->imc_arr[3];
break;
case ($this->imc < 30):
$this->imc_cat = $this->imc_arr[4];
break;
case ($this->imc < 35):
$this->imc_cat = $this->imc_arr[5];
break;
case ($this->imc < 40):
$this->imc_cat = $this->imc_arr[6];
break;
default:
$this->imc_cat = $this->imc_arr[7];
}
}
}
?>
它不起作用。我无法确定发生了什么以及问题是什么,但它没有像我预期的那样回应变量(imc_cat)。我确信这很简单,但我已经花了几个小时寻找答案但没有成功。 我很欣赏任何可能出错的见解。
答案 0 :(得分:2)
您没有在case
个表达式中添加条件。 switch()
使用case ($this->imc < 16):
语句中的表达式执行相等性测试,所以
if ($this->imc == ($this->imc < 16))
装置
if/elseif
您应该使用switch/case
代替if ($this->imc < 16) {
$this->imc_cat = $this->imc_arr[0];
} elseif ($this->imc < 17) {
$this->imc_cat = $this->imc_arr[1];
} ...
} else {
$this->imc_cat = $this->imc_arr[7];
}
。
switch(true) {
case ($this->imc < 16):
$this->imc_cat = $this->imc_arr[0];
break;
case ($this->imc < 17):
$this->imc_cat = $this->imc_arr[1];
break;
...
}
实际上,有一些程序员使用的方法(但我个人不认可):
<com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="my_admob_real_unitid"> </com.google.android.gms.ads.AdView>