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]   

> Описание: если if не работает
max11
Отправлено: 31 Января, 2011 - 00:07:49
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2010  


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




В цикле происходит запись в файл. Записываются переменные массива, вычлененные функцией explode из текста, по символу "/".

В среднем получается около 5 переменных за один проход цикла, то есть около 3 -4 слэшей находится.
Так вот, если символ "/" не встретился в тексте и соответственно переменная не создалась, то при записи в файл результатов таким образом:
PHP:
скопировать код в буфер обмена
  1. fwrite($news_db, $descpost[0]."\r\n");
  2. fwrite($news_db, $descpost[1]."\r\n");
  3. fwrite($news_db, $descpost[2]."\r\n");

происходит ошибка undefined offset . Как проще сделать проверку?
Вот так пробовал, не работает:
PHP:
скопировать код в буфер обмена
  1.   if ($descpost[0]) fwrite($news_db, $descpost[0]."\r\n");
  2. if ($descpost[1]) fwrite($news_db, $descpost[1]."\r\n");
  3. if ($descpost[2]) fwrite($news_db, $descpost[2]."\r\n");


и подскажите почему в данном случает if ($descpost[0]) не срабатывает

(Отредактировано автором: 31 Января, 2011 - 00:30:01)

 
 Top
annihilus
Отправлено: 31 Января, 2011 - 00:33:18
Post Id



Гость


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


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




explode() выполняется в цикле? увидеть бы код целиком...
 
 Top
max11
Отправлено: 31 Января, 2011 - 00:38:02
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2010  


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $count = count();
  3. $news_db = fopen($folder . 'content\\export.txt', 'wb');
  4.   for($i = 0; $i<$count; $i++){  
  5.    $desc = get_data($i, 'description');
  6.  
  7.   $descpost = explode("/", $desc);
  8.  
  9. if ($descpost[0]) fwrite($news_db, $descpost[0]."\r\n");
  10. if ($descpost[1]) fwrite($news_db, $descpost[1]."\r\n");
  11. if ($descpost[2]) fwrite($news_db, $descpost[2]."\r\n");
  12. }
  13. ?>


print_r выдает нормальные массивы, где есть слэш, где нет - работа прерывается

(Отредактировано автором: 31 Января, 2011 - 00:41:48)

 
 Top
annihilus
Отправлено: 31 Января, 2011 - 00:39:46
Post Id



Гость


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


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




max11 пишет:
if ($descpost[0])

смотрите что возвращает функция explode()... в вашем случае результат if ($descpost[0]) всегда будет положителен.
 
 Top
Toxa
Отправлено: 31 Января, 2011 - 00:43:19
Post Id



Посетитель


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


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

[+]


а зачем открывать файл на запись в бинарном режиме?

строчки 9 - 11 более грамотнее заменить на
PHP:
скопировать код в буфер обмена
  1. foreach($descpost as $d)
  2. fwrite($news_db, $d."\r\n");

(Отредактировано автором: 31 Января, 2011 - 00:45:21)



-----
Удобный сервис для хранения файлов
 
 Top
annihilus
Отправлено: 31 Января, 2011 - 00:44:08
Post Id



Гость


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


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $count = count();
  3. $news_db = fopen($folder . 'content\\export.txt', 'wb');
  4.    
  5.    $desc = get_data(6, 'description');
  6.  
  7.   $descpost = explode("/", $desc);
  8.  
  9. $z=sizeof($descpost);
  10. if($z>1)
  11. {
  12.    for($n=0;$n<$z;$n++)
  13.    {
  14.      fwrite($news_db, $descpost[$n]."\r\n");
  15.    }
  16. }
  17. ?>

но лучше записывать значения $descpost в переменную , а потом 1 раз в файл..
(Добавление)
Toxa пишет:
не факт. А если слешей в строке нет и массив пуст?

Он пуст , только если переменная в котором надо искать слеш пуста...

(Отредактировано автором: 31 Января, 2011 - 00:49:11)

 
 Top
Toxa
Отправлено: 31 Января, 2011 - 00:47:47
Post Id



Посетитель


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


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

[+]


да, спасибо, я уже прочитал


-----
Удобный сервис для хранения файлов
 
 Top
max11
Отправлено: 31 Января, 2011 - 00:56:20
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2010  


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




спасибо, вариант со счетом попробую
ещё как вариант советовали isset применить, сработает ли она тут?
 
 Top
annihilus
Отправлено: 31 Января, 2011 - 01:01:07
Post Id



Гость


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


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




max11 пишет:
ещё как вариант советовали isset применить, сработает ли она тут?

сработает только для индексов больше 0
 
 Top
JustUserR
Отправлено: 31 Января, 2011 - 18:29:28
Post Id



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


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


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




max11 пишет:
Ещё как вариант советовали isset применить, сработает ли она тут?
Использование оператора isset позволяет осуществить проверку существование указанного именованного элемента в текущей области видимости - определение которого обеспечивается на основании идентичной проверци целевого элемента с константой null В действительности объявляемые переменные объекты являются значениями глобального ассоциативного массива для которых трактование ключей осуществляется на уровня определения элементов потока - по этой причине применение указанного оператора допустимо в элементам различного типа


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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