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 :: Не работает foreach()

 PHP.SU

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


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

> Описание: У меня не работает foreach()
Srthmnt
Отправлено: 10 Апреля, 2018 - 15:25:45
Post Id


Новичок


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


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




Проблема решена












Результат:
https://sht-com[dot]000webhostapp[dot]com/
Потом доделаю










Код программы:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <title>ShT</title>
  2. <?php
  3. $data = fopen('data.txt', 'a+');
  4. foreach($data as $line){
  5. echo $line;
  6. echo "<br />";
  7. }
  8. ?>
  9. <meta http-equiv="refresh" content=3; url='https://ShT-com.000webhostapp.com/'>

, а точнее, эта часть:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. foreach($data as $line){
  3.  
  4. }
  5.  

. В чём причина?
Код ошибки:
Warning: Invalid argument supplied for foreach() in index.php on line 4

(Отредактировано автором: 11 Апреля, 2018 - 14:15:50)

 
 Top
Строитель Модератор
Отправлено: 10 Апреля, 2018 - 15:37:51
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




fopen возвращает тип "ресурс", а foreach() работает с массивами. Читайте соответствующие разделы мануала.
 
 Top
Vladimir Kheifets
Отправлено: 10 Апреля, 2018 - 15:45:02
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




Srthmnt пишет:
Код программы:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <title>ShT</title>
  2. <?php
  3. $data = fopen('data.txt', 'a+');
  4. foreach($data as $line){
  5. echo $line;
  6. echo "<br />";
  7. }
  8. ?>
  9. <meta http-equiv="refresh" content=3; url='https://ShT-com.000webhostapp.com/'>

, а точнее, эта часть:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. foreach($data as $line){
  3.  
  4. }
  5.  

. В чём причина?
Код ошибки:
Warning: Invalid argument supplied for foreach() in index.php on line 4


Добрый день! Почему не работает Вам объяснили. Если вместо
$data = fopen('data.txt', 'a+'); написать
$data = file('data.txt'); то будет работать.
Удачи!
 
 Top
armancho7777777 Супермодератор
Отправлено: 10 Апреля, 2018 - 20:26:29
Post Id



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


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


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




Примеры в копилку ТС (Отобразить)
 
 Top
Vladimir Kheifets
Отправлено: 11 Апреля, 2018 - 08:00:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




Srthmnt пишет:
foreach($data as $line)
{
}
В чём причина?
Код ошибки:
Warning: Invalid argument supplied for foreach() in index.php on line 4

Доброе утро! Вообщем-то в причине этой ошибки разобрались.
На всякий случай, нужно иметь ввиду, что в качестве первого параметра foreach может быть задан не только массив, но и объект.
В том случае, если, как у Вас, должен быть массив, но по какой-то причине он там не оказывается можно избежать проблем используя is_array или (array)$data
PHP:
скопировать код в буфер обмена
  1. $data =[1,2,3];
  2. var_dump($data);
  3. echo "<hr>";
  4. foreach ($data as $line)
  5. {
  6.     echo  "$line<br>";
  7. }
  8. echo "<hr>";
  9. $data = 1;
  10. var_dump($data);
  11. echo "<hr>";
  12. foreach ((array)$data as $line)
  13. {
  14.     echo  "$line<br>";
  15. }
  16. echo "<hr>";
  17. if(is_array($data))
  18. {
  19.         foreach ($data as $line)
  20.         {
  21.             echo  "$line<br>";
  22.         }
  23. }
  24.  
  25. /*
  26. Результат:
  27. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
  28. 1
  29. 2
  30. 3
  31. --------------------------------
  32. int(1)
  33. 1
  34. */
  35.  

Удачи!
 
 Top
Srthmnt
Отправлено: 11 Апреля, 2018 - 12:56:34
Post Id


Новичок


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


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




Vladimir Kheifets пишет:
Srthmnt пишет:
Код программы:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <title>ShT</title>
  2. <?php
  3. $data = fopen('data.txt', 'a+');
  4. foreach($data as $line){
  5. echo $line;
  6. echo "<br />";
  7. }
  8. ?>
  9. <meta http-equiv="refresh" content=3; url='https://ShT-com.000webhostapp.com/'>

, а точнее, эта часть:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. foreach($data as $line){
  3.  
  4. }
  5.  

. В чём причина?
Код ошибки:
Warning: Invalid argument supplied for foreach() in index.php on line 4


Добрый день! Почему не работает Вам объяснили. Если вместо
$data = fopen('data.txt', 'a+'); написать
$data = file('data.txt'); то будет работать.
Удачи!



Спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB