Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP返回除零_Php - Fatal编程技术网

PHP返回除零

PHP返回除零,php,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

我在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;
}
它回来了

if ($countArr===0) return 0;
更新 我认为这不是函数逻辑错误。我使用的是Yii2框架,该函数在index.php的gridview中调用。原因是我有3行数据,其中只有一行包含数据。这就是为什么$countArr是0,因为在第二行中没有来自$arrayNilai的数据。 谢谢


如果查询没有返回任何数据。它导致被零除。在这种情况下,您希望结果如何?也许零?你必须明确地处理这种情况。像


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

4,2是什么意思。将是4或2。 我想你错过了这里 $totalPoin=$totalPoin+$arrayNilai[$i]

将是$totalPoin.=$totalPoin+$arrayNilai[$i]


尝试在此处处理错误处理。您可以使用带有变量名的@。

否,我回显两个变量,因此输出4、2。$totalPoin=$totalPoin+$arrayNilai[$i]的结果;是的。问题是为什么我给tag//issue的行中说$countArr为零。@变量名?你能描述一下吗?@操作符是由懒惰和不负责任的开发人员使用的。在某些情况下,那些被迫使用由懒惰、不负责任的开发人员创建的代码的人……使用@的例子?相反,因为您可能是初学者,所以我不会向您介绍一个不惜一切代价最好避免的功能…是的,您是对的。如果我避开它会更好。谢谢你这么说:有一个数据。这就是循环中没有错误的原因。哦,等等,你想打印斜杠,而不是除法运算符?然后,就像你用逗号表示的例子一样,把它连接起来:echo$totalPoin.'/'$countArr;不,我使用斜杠作为运算符。如果我用static int更改$countArr,那么函数工作得很好。因此,我确信问题出在$countarr,向我展示输出,包括整个函数的错误,并放置var_dump$arrayDataMitra//就在分配var_dump$arrayNilai的行之后//就在分配该值和var_dump$countArr的行之后//就在分割线之前,我已经更新并显示了输出数据。这还不够吗?如果你加了骰子,程序就结束了。如果没有它,函数将成功完成,但可能会再次调用,并且在后续调用中,$arrayNilai为空,因此,$countArr为0;谢谢你的评论,让我敞开心扉。
This is data array
Array
(
    [0] => 2
    [1] => 2
)

This is array count
2
if ($countArr===0) return 0;