Создать цикл foreach из файла JSON

1

У меня есть json файл (items.json), который выглядит следующим образом:

{"response":{"success":1,"current_time":1446373851,"items":[
{
"Item1": {"last_updated":1446372015,"quantity":73,"value":1200},
"Item2": {"last_updated":1446372015,"quantity":40,"value":5297},
"Item3": {"last_updated":1446372015,"quantity":148,"value":2507}
}]}}

Я попытался создать цикл for для создания элементов со значениями из каждого элемента в json:

$values = file_get_contents( $siteurl.'/json/items.json');
$values = json_decode($values);

foreach ($values->items as $key => $value) {

if($value==Item1 && $value->value>1000){
<p><?php echo $value->value ; ?></p>
}
}

В приведенном выше примере я тестирую первое значение в "items" (Item1). Я бы хотел иметь foreach для всех этих трех предметов.

Но браузер выводит следующую ошибку: "Предупреждение: неверный аргумент, предоставленный foreach() в".

Как правильно создать foreach, где я могу получить значения из всех объектов "items" (ex "Item1" и "Item2), которые работают для моего формата json файла.

  • 1
    Просто var_dump это и проверить структуру?
Теги:

3 ответа

0
Лучший ответ

Ваши объекты на самом деле находятся в объекте "ответ", а затем у вас есть объект item, завернутый в массив. Если вы не можете редактировать items.json, вы можете сделать

$values = file_get_contents( $siteurl.'/json/items.json');
$values = json_decode($values);

foreach ($values->response->items as $key => $value) {
   foreach($value as $key => $value) {
       if($key == 'Item1' && $value->value > 1000) {
           echo $value->value;
        }
    }
}

Лучшим решением было бы удалить массив из items.json (квадратные скобки), поскольку он кажется избыточным, а затем выполните:

$values = file_get_contents( $siteurl.'/json/items.json');
$values = json_decode($values);

foreach ($values->response->items as $key => $value) {
    if($key == 'Item1' && $value->value > 1000) {
        echo $value->value;
    }
}
0

Пожалуйста, попробуйте этот путь

foreach ($values as $key => $value) {


    foreach($value->items as $k => $v){
        foreach($v as $k1 => $v1){


            echo ($v1->value);
        }
    }


}
0

Просто попробуйте ниже код, который написан для обеспечения точного вывода в соответствии с вашим требованием.

$data = file_get_contents( $siteurl.'/json/items.json');
$values = json_decode($data);

foreach ($values as $key => $value) {
    foreach($value->items as $key1 => $value1){
        foreach($value1 as $key2 => $value2){
            if($key2=="Item1" && $value2->value>1000){
                 echo $value2->value;
            }
        }
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню