pbootcms程序运行异常: Modulo by zero,位置:/www/wwwroot/****/core/function/helper.php
直接说解决方法:
代码中838行$res = $arr[0] % $arr[1];
这行出现了除数为零的错误,这是典型的"Modulo by zero"问题。以下是具体解决方案:
解决方案(下面是两种,推荐第一种即可)
-
添加除数检查(推荐)
在模运算前验证除数是否为有效数值:if ($items == '%') { // 确保分割后有两个元素且第二部分是有效数字 if (count($arr) === 2 && is_numeric($arr[1]) && $arr[1] != 0) { $res = $arr[0] % $arr[1]; } else { $res = null; // 无效输入时返回默认值 } }
-
完整输入校验
// 限制分割次数为2,确保得到两部分 $arr = explode($items, $str, 2); if ($items == '%'){ if (count($arr) === 2 && is_numeric($arr[0]) && is_numeric($arr[1]) && $arr[1] != 0) { $res = (int)$arr[0] % (int)$arr[1]; }else { $res = $str; // 无效输入返回原字符串 } }
错误原因
- 当
$str
为纯百分号(如"100%"
)时,explode('%', '100%')
会得到['100', '']
,空字符串转为数值0
导致除数为零 - 非数值内容(如
"abc%def"
)进行运算也会引发错误