#php #loops #warnings
#php #циклы #предупреждения
Вопрос:
У меня есть этот код:
for ($y = 0; $y < $numRows; $y ) {
for ($i = 0; $i < $numRows; $i ) {
${'contaH' . $i}[]=${'arrHoriz' . $i}[$y]/$arr[$y];
}
}
echo $contaH0[0]."n";
этот вывод:
Warning: Division by zero in C:UsersxxVertrigoServwwwAHPnewdemo.php on line 66
Warning: Division by zero in C:UsersxxVertrigoServwwwAHPnewdemo.php on line 66
Warning: Division by zero in C:UsersxxVertrigoServwwwAHPnewdemo.php on line 66
Warning: Division by zero in C:UsersxxVertrigoServwwwAHPnewdemo.php on line 66
0.300618921309
но если я изменю эту строку:
${'contaH' . $i}[]=${'arrHoriz' . $i}[$y]/$arr[$y];
Для
${'contaH' . $i}[]=${'arrHoriz' . $i}[$y]/$arr[0];
вывод:
0.300618921309
В чем причина предупреждения в первом коде?
Комментарии:
1. Разве предупреждение недостаточно очевидно?
2. @ marabutt >>> массив (3) {[0]=> строка(6) «113.1 » [1]=> строка(5) «53.3 » [2]=> строка (3) «46» }
Ответ №1:
Либо $arr
в нем не так много элементов, как вы думаете, либо в нем много 0 или пустых элементов.
Ответ №2:
Причина в том, что в вашем цикле $arr[$y]
не всегда равно 0. Где-то в вашем массиве это ноль (или не определено). Вы должны проверить, равен ли ваш знаменатель нулю, прежде чем выполнять какое-либо деление, и правильно обработать случай, когда он равен нулю.