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 » PHP » Программирование на PHP » работа с массивом

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

1. leshiy_SV - 21 Октября, 2009 - 12:56:24 - перейти к сообщению
Ребята подскажите почему не работает код:
CODE (text):
скопировать код в буфер обмена
  1. foreach ($arra as $value=>$zapisi) {
  2. if((arra[$value])!==NULL) {
  3. $fp = fopen($path.$value, "w");
  4. if (fwrite($fp,$zapisi) === False) {echo "Ошибка записи"; exit;};
  5. fclose($fp);}
  6. }

Принцип кода, пробегает по массиву проверяет значения элементов и если значение не пустое, то создается файл с названием ключа и туда записывается значение элемента.
если убрать проверку на пустоту (2ую строчку), то все работает. только при этом создаются пустые файлы, что не есть хорошо. никак не могу разобраться
2. Мелкий - 21 Октября, 2009 - 13:08:11 - перейти к сообщению
оставьте только if (!(arra[$value])) Интерпретатор разберётся, что из этого не пустое.

А что там должно быть пустое? Пустая строка ""? Просто не инициализированные массивы проверять не стоит, мало ли что в той области памяти окажется...
3. leshiy_SV - 21 Октября, 2009 - 13:22:19 - перейти к сообщению
не идет, опять вылетает ошибка: Parse error: parse error
(Добавление)
Если несколько раз массив перебирать, вначале напустые значения, а потом то что осталось записать в файлы, то работает. Вот так:
CODE (text):
скопировать код в буфер обмена
  1. foreach ($arra as $iq=>$qwq)  {if( (!$arra["$iq"])) unset($arra["$iq"]);}
  2. foreach ($arra as $value=>$zapisi) {   
  3. $fp = fopen($path.$value, "w")
  4. if (fwrite($fp,$zapisi) === False) {echo "Ошибка записи"; exit;};
  5. fclose($fp);}

А чтобы сразу делать проверку на пустоту и записывать если не пусто, не идет
4. Ch_chov - 21 Октября, 2009 - 16:15:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. foreach ($arr as $fName => $fContent)
  2.   if(strlen($fName)) file_put_contents($fName, $fContent);


Вообще желательно проверять ключи массива не только на пустоту, но и на наличие символов, которые недопустимы в названии файла.

 

Powered by ExBB FM 1.0 RC1