Excel — PHP деление на ноль предупреждения с проверкой

У меня есть скрипт, который делает некоторые математические и делает лист Excel, но я случайно получаю

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

Что сбрасывает мои изменения header () .. Я говорю, что это случайно, потому что это будет работать один раз, но если я обновлю страницу, это нарушит, самая запутанная часть состоит в том, что у меня также есть проверка, является ли его ноль здесь кодом

      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

Решение

Затем я добавляю это как ответ:

Это может быть связано с тем, что значение равно NULL, которое, на самом деле, не> 0. Но это все равно даст вам эту ошибку

2

Другие решения

Я замечаю, что место, где он ломается, это когда $ cartonCount равен «0.06». Я подозреваю, что $ cartonCount хранится в виде строки, возможно, в европейском стиле 0,06 десятичной записи. Когда PHP пытается преобразовать это в число, он видит его как ноль. Я не уверен, почему он действует по-другому для оператора по модулю, а не для проверки деления или равенства, но ставит $cartonCount = intval($cartonCount) перед строкой 167 все должно действовать последовательно (хотя это может привести к тому, что ваш 0,06 будет интерпретирован как ноль).

1

Оператор по модулю преобразует (или округляет) второе число в целое число. 0,06 приводит к 0, что создает предупреждение.

Возможные варианты: например, приведение к integer или round () перед проверкой> 0, округление с использованием ceil () или проверка> 1.

Исходя из контекста, ceil () кажется лучшим вариантом.

1
По вопросам рекламы [email protected]