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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: работа с массивом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
leshiy_SV
Отправлено: 21 Октября, 2009 - 12:56:24
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009  
Откуда: Пятигорск


Помог: 0 раз(а)




Ребята подскажите почему не работает код:
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ую строчку), то все работает. только при этом создаются пустые файлы, что не есть хорошо. никак не могу разобраться
 
 Top
Мелкий Супермодератор
Отправлено: 21 Октября, 2009 - 13:08:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




оставьте только if (!(arra[$value])) Интерпретатор разберётся, что из этого не пустое.

А что там должно быть пустое? Пустая строка ""? Просто не инициализированные массивы проверять не стоит, мало ли что в той области памяти окажется...


-----
PostgreSQL DBA
 
 Top
leshiy_SV
Отправлено: 21 Октября, 2009 - 13:22:19
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Окт. 2009  
Откуда: Пятигорск


Помог: 0 раз(а)




не идет, опять вылетает ошибка: 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);}

А чтобы сразу делать проверку на пустоту и записывать если не пусто, не идет

(Отредактировано автором: 21 Октября, 2009 - 14:35:59)

 
 Top
Ch_chov
Отправлено: 21 Октября, 2009 - 16:15:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




PHP:
скопировать код в буфер обмена
  1. foreach ($arr as $fName => $fContent)
  2.   if(strlen($fName)) file_put_contents($fName, $fContent);


Вообще желательно проверять ключи массива не только на пустоту, но и на наличие символов, которые недопустимы в названии файла.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB