php - 循环嵌套 JSON 响应 PHP
问题描述
我正在尝试从返回的 JSON 响应中循环并返回数据(“rank_details”中的“rank”)。
这是 JSON 响应的片段(我从中得到什么: $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',
),
),
),
),
),.....
这是我的代码片段:
$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 可以通过,但不在“顶级”中的任何内容都不会通过。任何帮助是极大的赞赏。
解决方案
即使只有一个条目,您也必须对 data 和 rank_details 数组进行索引。
这对我有用:
echo "\n Record Rank: " . $value->data[0]->rank_details[0]->rank;
推荐阅读
- react-native - 如何从抽屉导航器传递函数
- xamarin.android - Appcenter 无法确定“v11.0”的 $(TargetFrameworkVersion) 的 API 级别
- android - 使用 Delphi,我正在尝试更改 AndroidTTS 的音量,但我似乎不断收到错误“外部异常 1”
- wordpress - 如何通过 Wordpress REST API 对 LearnDash 中受保护数据的远程访问进行身份验证?
- java - 时间/空间复杂度
- linux-mint - 如何让 Caja 与 Samba 共享一起工作?
- glsl - 如何在 HLSL 中声明 GS 中的流输出?
- .net - AzureDevops & dotnet pack:##[错误]没有文件与搜索模式匹配
- java - android 视图的源类
- android - 如何在单独的存储库 (MVVM) 中传递 Firestore SnapshotListener 提供的实时数据