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 :: Версия для печати :: Не работает foreach()
Форумы портала PHP.SU » » Вопросы новичков » Не работает foreach()

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

1. Srthmnt - 10 Апреля, 2018 - 15:25:45 - перейти к сообщению
Проблема решена












Результат:
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
2. Строитель - 10 Апреля, 2018 - 15:37:51 - перейти к сообщению
fopen возвращает тип "ресурс", а foreach() работает с массивами. Читайте соответствующие разделы мануала.
3. Vladimir Kheifets - 10 Апреля, 2018 - 15:45:02 - перейти к сообщению
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'); то будет работать.
Удачи!
4. armancho7777777 - 10 Апреля, 2018 - 20:26:29 - перейти к сообщению
Примеры в копилку ТС (Отобразить)
5. Vladimir Kheifets - 11 Апреля, 2018 - 08:00:32 - перейти к сообщению
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.  

Удачи!
6. Srthmnt - 11 Апреля, 2018 - 12:56:34 - перейти к сообщению
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'); то будет работать.
Удачи!



Спасибо

 

Powered by ExBB FM 1.0 RC1