Доступ к данным массива JSON в PHP - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь получить данные из внешнего API.Из данных JSON я хочу получить некоторые данные, как отмечено на изображении.

enter image description here

Я могу получить доступ к данным «команд» с помощью этого кода -

foreach( $data->data as $info ) {
            echo '<li class="team-1">'. $info->teams[0].'</li>';
            echo '<li class="team-2">'. $info->teams[1].'</li>';
 };

Но когда я пытаюсь получить более глубокий доступ к данным из массива объектов, это не работает и выдает ошибку -

foreach( $info->sites as $site) {
        foreach( $site->odds as $odd) {
            echo $odd->h2h[0];
        }
}

Так что мой вопрос - как лучшецикл по данным для доступа к этим массивам.Я использую этот код в Wordpress, но я думаю, что он будет таким же, как PHP.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Вы должны получить доступ к h2h напрямую из odds, поскольку это не массив, а объект

foreach( $info->sites as $site) {
        echo $site->odds->h2h[0];
}
0 голосов
/ 04 октября 2018

Вы получаете этот json из внешнего API и конвертируете его, используя json_decode, верно?Если это так, просто используйте второй параметр "$ assoc" и установите для него значение true, чтобы не получить объект, а ассоциативный массив, который вы можете использовать следующим образом:

$info = json_decode($api_answer,true);
if(isset($info['sites']['odds'])){
     foreach($info['sites']['odds'] as $odd){
        echo $odd['h2h'][0]
     }
}
0 голосов
/ 04 октября 2018

Похоже, что коэффициент является объектом, а не массивом.

Если h2h всегда будет единственным свойством в коэффициентах, тогда вы можете попробовать:

foreach( $info->sites as $site) {
    echo $site->odds->h2h[0];
}

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

foreach( $info->sites as $site) {
    foreach( (array)$site->odds as $odd) {
        echo $odd[0];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...