我正在使用一种方法来计算一些分数。这是下面的方法:
public function getIntScore($name, $int){
switch ($name) {
case "bedrooms":
$maxscore = 15;
break;
case "living_size":
$maxscore = 10;
break;
case "property_size":
$maxscore = 10;
break;
case "date_of_construction":
$maxscore = 3;
break;
}
$houseattribute = (int) $this->$name;
$difference = abs($houseattribute - $int);
if ($difference == 0) {
return $maxscore;
}
$score = ($difference / $houseattribute) * $maxscore;
return round($score);
}
然而,这使我得到一个“除以零”的错误。我在计算之前检查了变量的值,没有一个是零。
var_dump($difference, $houseattribute, $maxscore)
输出:
int(2) int(3) int(15)
$score = ($difference / $houseattribute) * $maxscore;
之前进行了检查吗? 你确定在这一行中除以零会抛出异常吗? - neworld$score = ($difference / $houseattribute) * $maxscore;
。 - Sietse$houseattribute
不等于 0。 @Narretz 在这个例子中,$this->$name
返回字符串 "3",将其转换为整数会得到 3。 - Sietse