@Maxla93

Как исправить ошибку Invalid argument supplied for foreach()?

В файле name_full.txt хранится содержимое:
item345, item347
item348, item349

В api ответ следующий:
{"result":{"appid":730,"contextid":"2","items":{"item345":860,"item348":2347}}}

$classid = file('name_full.txt', FILE_IGNORE_NEW_LINES);
$url = "https://site.com/api/user_api.php?request=GetLowestSalePrices&key=";

$opts = array('http'=>array('method'=>"GET",'header'=>"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36"));
$context = stream_context_create($opts);

foreach($classid as $info){

$start = @file_get_contents($url.@file_get_contents('key.txt')."&appid=730&contextid=2&names=".$info, false, $context);

$json = json_decode($start);
	
foreach ($json as $key => $value) { // тут возникает ошибка 
	
	foreach ($value->items as $key2 => $value2){
	}	
}
if (($info % 1) == 0)
  {
    usleep(300000);
  }
}
?>
  • Вопрос задан
  • 340 просмотров
Пригласить эксперта
Ответы на вопрос 4
muhammad_97
@muhammad_97
PHP-разработчик
Забыл передать второй параметр true. По умолчанию возвращает объект.

$json = json_decode($start, true);

Еще можно ошибки проверить, если функция вернула null: php.net/manual/ru/function.json-last-error.php
Ответ написан
Комментировать
Urvin
@Urvin
например, так
$json = json_decode($start);
if($json) {
  foreach ($json as $key => $value) {
    ...
  }
}


А вообще разок выведите $json через var_dump, сразу увидите, что не так.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Возвращает данные json преобразованные в соответствующие типы PHP. Значения true, false и null возвращаются как TRUE, FALSE и NULL соответственно. NULL также возвращается, если json не может быть преобразован или закодированные данные содержат вложенных уровней больше, чем допустимый предел для рекурсий.

php.net/manual/ru/function.json-decode.php
Ответ написан
Комментировать
Express777
@Express777
Что приходит в json ?
Посмотрите дебаггером или var_dump

UPD:
попробуйте так
foreach ($json->result as $key => $value) {
  
  foreach ($value->items as $key2 => $value2){
  }	
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
17 апр. 2024, в 00:31
1000 руб./за проект
17 апр. 2024, в 00:13
800 руб./за проект
17 апр. 2024, в 00:06
240000 руб./за проект