我正在使用一种方法来计算一些分数。这是以下方法:
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)
答案 0 :(得分:1)
确保测试空值:
$houseattribute = (int) $this->$name;
if (empty($houseattribute)) {
throw new Exception('House attribute is zero.');
}
答案 1 :(得分:0)
解决。我愚蠢到忘记我在数组中循环,第一个$houseattribute
是3
。我的数组中有一个$houseattribute
为0
的项目,但因为在转储变量之后我使用exit;
我并不知道它是。我将它改为正整数而不是它正在工作。