【问题标题】:Loop Through Nested JSON Response PHP循环嵌套 JSON 响应 PHP
【发布时间】:2021-04-10 12:27:28
【问题描述】:

我正在尝试循环并从返回的 JSON 响应中返回数据(“rank_details”中的“rank”)。

这是 JSON 响应的 sn-p(我从中得到的:$array = json_decode($apiResponse);)

(object) array(
   'obj' => 
  array (
    0 => 
    (object) array(
       'name' => 'I\'m a HellRazor (feat. Crucifix)',
       'id' => 13859011,
       'data' => 
      array (
        0 => 
        (object) array(
           'timestp' => '2019-10-27T00:00:00.000Z',
           'score' => 1.9610844011276853,
           'rank_details' => 
          array (
            0 => 
            (object) array(
               'rank' => 191,
               'country' => 'RU',
               'score' => 1.9610844011276853,
               'genre' => 'Country',
            ),
          ),
        ),
        1 => 
        (object) array(
           'timestp' => '2019-12-04T00:00:00.000Z',
           'score' => 14.70808550760029,
           'rank_details' => 
          array (
            0 => 
            (object) array(
               'rank' => 9,
               'country' => 'CH',
               'score' => 14.70808550760029,
               'genre' => 'Country',
            ),
          ),
        ),
        2 => 
        (object) array(
           'timestp' => '2020-03-18T00:00:00.000Z',
           'score' => 13.299189761918104,
           'rank_details' => 
          array (
            0 => 
            (object) array(
               'rank' => 5,
               'country' => 'RU',
               'score' => 13.299189761918104,
               'genre' => 'Country',
            ),
          ),
        ),
        3 => 
        (object) array(
           'timestp' => '2020-07-12T00:00:00.000Z',
           'score' => 19.02841337415393,
           'rank_details' => 
          array (
            0 => 
            (object) array(
               'rank' => 77,
               'country' => 'DE',
               'score' => 19.02841337415393,
               'genre' => 'Country',
            ),
          ),
        ),
        4 => 
        (object) array(
           'timestp' => '2020-10-02T00:00:00.000Z',
           'score' => 2.631257456412845,
           'rank_details' => 
          array (
            0 => 
            (object) array(
               'rank' => 154,
               'country' => 'RU',
               'score' => 2.631257456412845,
               'genre' => 'Country',
            ),
          ),
        ),
        5 => 
        (object) array(
           'timestp' => '2020-10-03T00:00:00.000Z',
           'score' => 1.896575572629275,
           'rank_details' => 
          array (
            0 => 
            (object) array(
               'rank' => 195,
               'country' => 'RU',
               'score' => 1.896575572629275,
               'genre' => 'Country',
            ),
          ),
        ),
      ),
    ),.....

这是我的代码的 sn-p:

$apiResponse = curl_exec($cc);
$array = json_decode($apiResponse);
foreach ($array as $key => $arrays) { // This will search in the 2 jsons
    foreach($arrays as $key => $value) {     
        echo "\n Record ID:  " . $value->id;        
        echo "\n Record Name:  " . $value->name;         
        echo "\n Record Rank:  " . $value->obj->data->rank_details->rank;
        echo "\n";    
   }
}

记录名称和 ID 可以通过,但不在“顶级”中的任何内容都不会通过。非常感谢任何帮助。

【问题讨论】:

  • 使用json_decode($apiResponse, true); 处理关联数组
  • @jibsteroos 那将要实现什么,你有什么反对对象
  • 请给我们看看原始 JSON 字符串 $apiResponse,然后我们可以对其进行解码并测试答案
  • @cmaresh 你为什么删除你的答案,我觉得很好

标签: php json


【解决方案1】:

即使只有一个条目,您也必须对 data 和 rank_details 数组进行索引。

这对我有用:

echo "\n Record Rank:  " . $value->data[0]->rank_details[0]->rank;

【讨论】:

  • 谢谢!!!!我试过 $value->data[0]->rank_details->rank; (忘记添加索引)。
猜你喜欢
  • 1970-01-01
  • 2021-03-01
  • 2012-08-11
  • 2016-11-17
  • 2019-01-27
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多