在PHP中访问JSON数组数据

时间:2018-10-03 23:11:27

标签: php api json

我正在尝试从外部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 :(得分:0)

看起来赔率是一个对象,而不是一个数组。

如果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];
    }
}

答案 1 :(得分:0)

您应该直接从h2h访问odds,因为它不是数组,而是对象

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

答案 2 :(得分:0)

您可以从外部api获取此json并使用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]
     }
}