Извлечь данные из вложенных json в php

144
22 октября 2018, 15:40

Есть json строка вида:

$json = '
{
    "batchcomplete": "",
    "query": {
        "pages": {
            "89514": {
                "pageid": 89514,
                "ns": 0,
                "title": "Yahoo!",
                "thumbnail": {
                    "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Yahoo_Headquarters.jpg/50px-Yahoo_Headquarters.jpg",
                    "width": 50,
                    "height": 32
                },
                "pageimage": "Yahoo_Headquarters.jpg"
            }
        }
    }
}';

Хочу получить поле source на php, ввожу:

$yummy = json_decode($json, true);
echo $yummy['source'];

Естественно не выходит. Как реализовать? С простыми json справляюсь, а с вложенными не выходит.

Answer 1

На данный конкретный случай

$yummy['query']['pages']['89514']['thumbnail']['source'];

Но то такое...

Для общего случая:

$images = [];
foreach($yummy['query']['pages'] as $page){
    $images[] = $page['thumbnail']['source'];
}

На выходе массив ссылок $images (как понимаю, скорее всего там будет один элемент.

Если ID нужен, то можно так:

$images = [];
foreach($yummy['query']['pages'] as $id => $page){
    $images[$id] = $page['thumbnail']['source'];
}
READ ALSO
Мультиязычность на сайте

Мультиязычность на сайте

Скажите, как реализована мультиязычность на Facebook или в VK? Нужно сделать мультиязычность средствами php

198
Не правильно выполняю запрос MySQL, через PDO

Не правильно выполняю запрос MySQL, через PDO

Я начал только-только начал учить PDO, но дело не в этом, а в том, что я не знаю где и почему я не правильно выполняю MySQL запросВот код функции...

178
Как убрать public из URL в проектах Laravel

Как убрать public из URL в проектах Laravel

У меня есть проект devru

168