Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Бесконечный цикл
Форумы портала PHP.SU » » Вопросы новичков » Бесконечный цикл

Страниц (1): [1]
 

1. Aricus - 29 Октября, 2014 - 00:24:04 - перейти к сообщению
На следующий while-цикл выдаётся ошибка:
Fatal error: Maximum execution time of 30 seconds exceeded in S:\home... on line 25
PHP:
скопировать код в буфер обмена
  1. $fAVop = 0; $fAZak = 0; $kat1Num = $id + 1;
  2. while ($katStatusArray[$kat1Num] == 0)
  3. {if ($_POST["KatVop$kat1Num"] !== 1) $fAVop++;
  4. if ($_POST["KatZak$kat1Num"] !== 1) $fAZak++;
  5. $kat1Num++;}

Насколько понимаю, это означает, что цикл бесконечен. Но не понимаю, почему так случилось, ведь в конце цикла я перелистываю циклообразующую переменную $kat1Num.
В массиве $katStatusArray 95 переменных, так что дело не может быть в этом.
2. kotyara1979 - 29 Октября, 2014 - 00:58:57 - перейти к сообщению
1. Эта ошибка не говорит об "вечном" цикле, просто закончилось время работы скрипта.
2. А что выдает print_r($katStatusArray)?
3. Aricus - 29 Октября, 2014 - 02:10:07 - перейти к сообщению
1. И почему оно закончилось? На его выполнение не должно уходить много времени.
2. Array ( [0] => 1 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 1 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 1 [12] => 0 [13] => 0 [14] => 0 [15] => 0 [16] => 0 [17] => 1 [18] => 0 [19] => 0 [20] => 0 [21] => 0 [22] => 0 [23] => 1 [24] => 0 [25] => 0 [26] => 0 [27] => 0 [28] => 0 [29] => 0 [30] => 0 [31] => 0 [32] => 0 [33] => 0 [34] => 0 [35] => 0 [36] => 0 [37] => 0 [38] => 0 [39] => 0 [40] => 0 [41] => 0 [42] => 0 [43] => 0 [44] => 1 [45] => 0 [46] => 0 [47] => 0 [48] => 0 [49] => 0 [50] => 0 [51] => 0 [52] => 0 [53] => 0 [54] => 0 [55] => 1 [56] => 0 [57] => 0 [58] => 0 [59] => 0 [60] => 0 [61] => 0 [62] => 0 [63] => 0 [64] => 0 [65] => 0 [66] => 0 [67] => 1 [68] => 0 [69] => 0 [70] => 0 [71] => 0 [72] => 0 [73] => 1 [74] => 0 [75] => 0 [76] => 0 [77] => 0 [78] => 0 [79] => 0 [80] => 0 [81] => 0 [82] => 0 [83] => 0 [84] => 0 [85] => 0 [86] => 0 [87] => 0 [88] => 0 [89] => 0 [90] => 1 [91] => 0 [92] => 0 [93] => 0 [94] => 0 )
если уж так интересно.
4. IllusionMH - 29 Октября, 2014 - 03:00:54 - перейти к сообщению
Aricus, а чему равно $id?
5. Aricus - 29 Октября, 2014 - 03:53:54 - перейти к сообщению
$id в данном случае равно номерам $katStatusArray, чьи значения равны 1 (т.е. по очереди 1, 5, 23 и т.д.). Там цикл и условие перед рассматриваемым фрагментом. Но ошибка ссылается именно на этот цикл while, и без него всё работает хорошо.
6. Dastor - 29 Октября, 2014 - 07:49:42 - перейти к сообщению
Если while бесконечный, то значит, что $katStatusArray[$kat1Num] == 0 всегда true Улыбка
Не существующий элемент массива тоже вернет true.

И почему Вы здесь while используете? Какова логика? Что Вы хотите получить?
7. Sail - 29 Октября, 2014 - 08:05:47 - перейти к сообщению
Aricus пишет:
$_POST["KatVop$kat1Num"] !== 1

Строгое сравнение строки с числом. Всегда будет истинно.
А по поводу зацикливания - можно выводить отладочную информацию до цикла, в цикле, после цикла... значения всех переменных. Добавит ясности.

 

Powered by ExBB FM 1.0 RC1