You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP遍历数组求和做除法报DivisionByZeroError除零错误解决方法

问题成因

报错的核心原因是循环内的累加逻辑存在错误,最终导致$total_b始终为初始值0:

  • 累加$total_b时传入了整个数组而非单个元素:代码中写的是$total_b += $num_b,右侧操作数是完整的$num_b数组,不是数组内的数值。PHP算术运算中数组参与整数计算时会被隐式转换为数值0,两次循环相当于给$total_b累加了两次0,变量值没有任何变化。
  • 未按遍历下标匹配对应元素:当前循环遍历的是$num_a数组,循环中拿到的$key是$num_a元素对应的下标,即使要取$num_b的元素参与计算,也需要通过下标匹配对应位置的值,直接写数组名无法拿到单个元素。
修复方案

方案1:修正循环累加逻辑

调整循环内的$total_b累加规则,通过循环拿到的$key取$num_b对应位置的元素做累加:

$total_a = 0;
$total_b = 0;
foreach($num_a as $key => $a){
    $total_a += $a;
    $total_b += $num_b[$key];
}
// 除法运算前额外判断除数非0,从根源避免除零错误
if ($total_b !== 0) {
    $result = $total_a / $total_b;
} else {
    // 按需处理除数为0的场景,比如设置默认值、抛出业务提示
    $result = 0;
}

如果两个数组长度不固定,更稳妥的方式是单独遍历$num_b完成$total_b的累加,避免按下标取值时出现不存在的下标报错。

方案2:使用PHP内置求和函数(推荐)

不需要手动写循环遍历,直接调用PHP原生的array_sum()函数即可计算数组所有元素的和,代码更简洁,也不容易出现手写循环的逻辑错误:

$total_a = array_sum($num_a);
$total_b = array_sum($num_b);

if ($total_b !== 0) {
    $result = $total_a / $total_b;
} else {
    $result = 0;
}

内容的提问来源于stack exchange,提问作者Al zildan AR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:12:41