Чтение из массива объектов

194
25 августа 2018, 15:00

Хочу из такого JSON

[
    {
        "y": "test1",
        "list_of": [
            {
                "v":1,
                "name": "value1"
            },
            {
                "v":2,
                "name": "value2"
            }
        ]
    },
    {
        "y": "test2",
        "list_of": [
            {
                "v":3,
                "name": "value3"
            },
            {
                "v":4,
                "name": "value4"
            }
        ]
    }
]

вытащить name и v и их значения:

$FirstJSON = json_decode(file_get_contents('list.json'), true);
foreach ($FirstJSON as $arrays) {
    foreach($arrays as $array) {
        foreach ($array as $jsons){
            foreach ($jsons as $key => $value){
                echo $key . " => " . $value . "\n";
            }
        }    
    }        
}

Вродебы все есть, но warning:

Warning: Invalid argument supplied for foreach() in on line 20
v => 1
name => value1
v => 2
name => value2
Warning: Invalid argument supplied for foreach() in on line 20
v => 3
name => value3
v => 4
name => value4
Answer 1

У вас например "y": "test2" - не является массивом, вставьте хотя-б проверку.

$FirstJSON = json_decode(file_get_contents('list.json'), true);
foreach ($FirstJSON as $arrays) {
    foreach($arrays as $array) {
        if (is_array($array)) {    // Добавил
            foreach ($array as $jsons){
                foreach ($jsons as $key => $value){
                    echo $key . " => " . $value . "\n";
                }
            }
        }    // Добавил
    }
}

В следующий раз, постарайтесь указать на какой именно строчке возникла ошибка (в вашем случае: где находится 20ая строчка)

READ ALSO
Как принять JSON ответ на PHP?

Как принять JSON ответ на PHP?

На фронте при нажатии на кнопку собираю все данные с форми в JSON и отправляю на сервер

170
Почему не работает id3_get_tag?

Почему не работает id3_get_tag?

Fatal error: Uncaught Error: Call to undefined function id3_get_tag() in /pages\blocks\music\musicphp:101 Stack trace: #0 /\pages\music

193
Как лучше и быстрее всего передать первый массив данных клиенту

Как лучше и быстрее всего передать первый массив данных клиенту

Есть сайт, база данных и PHP прослойкаНадо передать клиенту первый JSON массив данных, а потом его обновлять через сокет

177
Как лучше реализовать таксономию

Как лучше реализовать таксономию

буду краток: У меня есть таблицы с нодами (моими статьями), файлами (к этим статьям)Конечно теперь не хватает организации, таблицы с тегами(терминами)

192