PHP归零除法

时间:2019-06-24 04:40:10

标签: php

我在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的数据。   谢谢

2 个答案:

答案 0 :(得分:0)

如果查询不返回任何数据,则为好。导致被零除。在这种情况下,您期望结果如何?也许零?您必须明确处理这种情况。喜欢

if ($countArr===0) return 0;

或者,如果没有数据,则根本不调用整个函数。

答案 1 :(得分:0)

4.2是什么意思。这将是4或2。 我想你在这里想念像 $ totalPoin = $ totalPoin + $ arrayNilai [$ i];

将是$ totalPoin。= $ totalPoin + $ arrayNilai [$ i];

尝试在此处处理错误处理。您可以通过使用@和变量名来实现。