【问题标题】:Accessing JSON array data in PHP在 PHP 中访问 JSON 数组数据
【发布时间】:2018-10-03 23:11:26
【问题描述】:

我正在尝试从外部 API 获取一些数据。我想从 JSON 数据中检索图像中标记的一些数据。

我可以使用此代码访问“团队”数据 -

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 相同。

【问题讨论】:

  • 根据您的结构,您应该可以使用$site-&gt;odds-&gt;h2h[0]$site-&gt;odds-&gt;h2h[1]

标签: php api json


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    odds 看起来像是一个对象而不是一个数组。

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

    【讨论】:

      【解决方案3】:

      您从外部 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]
           }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-16
        • 2021-08-23
        • 2020-11-25
        • 2023-01-08
        相关资源
        最近更新 更多