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. Scorp24 - 16 Января, 2012 - 11:00:59 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.         $file_array = file($this->txt_dir); // считываем файл в массив
  2.         $num_val_label = array_search($str_label, $file_array); // определяем ключ искомой метки в масииве
  3.         // перебираем массив и удаляем все занчения по условию
  4.         foreach($file_array as $key) {
  5.                 while ($key <= $num_val_label) {
  6.                         unset($file_array[$key]);
  7.                 }                                                   //line 89
  8.         }      
  9.         print_r($file_array);


Собственно ошибка:


Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\localhost\www\task1\classes\ReadFile.php on line 89


Пожалуйста, помогите разобраться в чем дело!
2. sKaa - 16 Января, 2012 - 11:04:27 - перейти к сообщению
Максимальное время выполнения скрипта пхп 30 секунд превышено.

Ищите эту директиву в настройках php.ini
3. Scorp24 - 16 Января, 2012 - 11:07:30 - перейти к сообщению
sKaa пишет:
Максимальное время выполнения скрипта пхп 30 секунд превышено.

Ищите эту директиву в настройках php.ini


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

еще есть какие то варианты?
4. Мелкий - 16 Января, 2012 - 11:11:40 - перейти к сообщению
sKaa, так от бесконечного цикла никакое значение не поможет. PHP не умеет исполнять бесконечные циклы за конечное время Подмигивание

Scorp24 пишет:
foreach($file_array as $key) {

В $key будет значение, а не ключ, всё-таки.
А что должен делать следующий цикл - я вообще понять не могу.
5. Scorp24 - 16 Января, 2012 - 11:21:58 - перейти к сообщению
Все разобрался, правильный код такой (задача занести в массив все значения из файла после указанной метки):

CODE (htmlphp):
скопировать код в буфер обмена
  1. $file_array = file($this->txt_dir); // считываем файл в массив
  2.         $num_val_label = array_search($str_label, $file_array); // определяем ключ искомой метки в масииве
  3.         // перебираем массив и удаляем все занчения по условию
  4.         foreach($file_array as $key => $value) {
  5.                 if ($key <= $num_val_label) {
  6.                         unset($file_array[$key]);
  7.                 }
  8.         }      
  9.         print_r(array_values($file_array)); // делаем периндексацию и выводим массив

 

Powered by ExBB FM 1.0 RC1