我有一个脚本可以做一些数学并制作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-----
答案 0 :(得分:2)
然后,我把它作为答案:
可能是因为该值为NULL,实际上不是> 0。但它仍然会给你这个错误
答案 1 :(得分:1)
我注意到它破坏的地方是$ cartonCount是&#34; 0.06&#34;。我怀疑$ cartonCount存储为字符串,可能带有欧洲风格的0,06十进制表示法。当PHP尝试将其转换为数字时,它会将其视为零。我不确定为什么它对模运算符采取不同的行为而不是对除法或等式检查采取不同的行为,但在第167行之前放置$cartonCount = intval($cartonCount)
应该使事情保持一致(尽管最终可能会将你的0.06解释为零)。
答案 2 :(得分:1)
模运算符将第二个数转换(或舍入)为整数。 0.06结果为0会产生警告。
可能的选项是例如在检查&gt;之前转换为整数或round()。 0,使用ceil()向上舍入或检查&gt; 1。
基于上下文ceil()似乎是最好的选择。