PHP部门通过一个检查零警告

我有一个脚本,做一些math,使Excel表,但我随机得到一个

Warning: Division by zero in myfile.php on line 170 

它抛出我的头()更改..我说,它的随机,因为它会工作一次,但如果我刷新页面,它打破了最容易混淆的部分是,我也有一个检查,如果它的零这里是代码

  167 if($cartonCount > 0){ 168 echo "-----" . $cartonCount . "-----"; 169 $mellow = $qty/$cartonCount; 170 $leftovers = $qty % $cartonCount; 171 for($x = 1 ; $x <= $mellow ; $x++){ 

如果纸箱的数量是0,它不应该运行,但我仍然得到警告..如果有人有一个想法让我知道这里是一个输出样本

 -2.38----------7.63----------12----------10----------7.5--------- 7.5----------4.5----------4.5----------4.5----------4.5----------7.5- ---------1----------9.5----------7.5----------2.38----------0.06----- Warning: Division by zero in /nfs/c08/h02/mnt/122022/domains/superstructs.com/html/catalog/test/samples/upsExport.php on line 170 -----2.38----------7.63----------7.5----------7.5----------2.38------ ----0.06----- 

然后,我把这个作为答案:

这可能是因为值为NULL,实际上不是> 0。 但它仍然会给你这个错误

我注意到,它打破的地方是$ cartonCount是“0.06”。 我怀疑$ cartonCount被存储为一个string,可能与欧式0,06十进制符号。 当PHP尝试将其转换为数字时,它将其视为零。 我不确定为什么模数运算符的行为不同,而不是分割或等式检查,但在行167之前放置$cartonCount = intval($cartonCount)应该使事情一致(尽pipe它可能最终将您的0.06解释为零)。

模运算符将第二个数字转换(或舍入)为整数。 0.06导致0,从而产生警告。

可能的选项是例如在检查> 0之前转换为整数或轮(),使用ceil()或check> 1进行取整。

基于上下文ceil()似乎是最好的select。