我在php中有一个函数,这就是函数
public function actionGetTotal($id){
$month = date('m');
$year = date('Y');
$arrayDataMitra = Yii::$app->db->CreateCommand("SELECT nilai FROM data WHERE MONTH(first_date) = '$month' AND YEAR(first_date) = '$year' AND idMitra = '$id' AND idProgram BETWEEN '7' AND '11'")->queryAll();
$arrayNilai = array_column($arrayDataMitra, 'nilai');
$countArr = count($arrayNilai);
$totalPoin = 0;
for($i = 0; $i < $countArr; $i++){
$totalPoin = $totalPoin + $arrayNilai[$i];
}
$totalPoin = $totalPoin / $countArr; //issue
return $totalPoin;
}
如果我以echo $totalPoin . ', ' . $countArr; die();
的格式打印,则会显示 4,2 。但是,如果我删除它,该函数将返回除以零。它说$ countArr为0。任何人都可以解释为什么会发生这种情况吗?
谢谢
更新
如果我这样做
$countArr = count($arrayNilai);
echo '<pre>';
echo 'This is data array';
echo '<br>';
print_r($arrayNilai);
echo '<br>';
echo 'This is array count';
echo '<br>';
echo $countArr;
die();
返回
This is data array
Array
(
[0] => 2
[1] => 2
)
This is array count
2
更新 我认为这不是函数逻辑错误。我使用的是Yii2框架,该函数在 index.php 中的gridview内部调用。原因是我有3行数据,其中只有一行包含数据。这就是
$countArr
为0的原因,因为在第二行中没有来自$arrayNilai
的数据。 谢谢
答案 0 :(得分:0)
如果查询不返回任何数据,则为好。导致被零除。在这种情况下,您期望结果如何?也许零?您必须明确处理这种情况。喜欢
if ($countArr===0) return 0;
或者,如果没有数据,则根本不调用整个函数。
答案 1 :(得分:0)
4.2是什么意思。这将是4或2。 我想你在这里想念像 $ totalPoin = $ totalPoin + $ arrayNilai [$ i];
将是$ totalPoin。= $ totalPoin + $ arrayNilai [$ i];
尝试在此处处理错误处理。您可以通过使用@和变量名来实现。