JSON-使用PHP访问嵌套数组中的数据
我有一个JSON文件,其结构如下JSON-使用PHP访问嵌套数组中的数据,php,arrays,json,Php,Arrays,Json,我有一个JSON文件,其结构如下 "data": { "lineups": { "team_a": [ { "player_id": 10127, "shirt_number": 1, "play
"data": {
"lineups": {
"team_a": [
{
"player_id": 10127,
"shirt_number": 1,
"player_events": []
},
{
"player_id": 8515,
"shirt_number": 6,
"player_events": [
{
"event_type": "Yellow",
"event_time": "89"
}
]
},
{
"player_id": 8630,
"shirt_number": 3,
"player_events": []
},
{
"player_id": 8202,
"shirt_number": 2,
"player_events": []
},
{
"player_id": 7296,
"shirt_number": 12,
"player_events": []
},
{
"player_id": 8056,
"shirt_number": 5,
"player_events": []
},
{
"player_id": 8697,
"shirt_number": 4,
"player_events": [
{
"event_type": "Goal",
"event_time": "44"
}
]
},
{
"player_id": 7284,
"shirt_number": 16,
"player_events": []
},
{
"player_id": 8298,
"shirt_number": 7,
"player_events": [
{
"event_type": "Goal",
"event_time": "17"
},
{
"event_type": "Goal",
"event_time": "43"
}
]
},
{
"player_id": 7325,
"shirt_number": 17,
"player_events": []
},
{
"player_id": 4281,
"shirt_number": 22,
"player_events": []
}
],
"team_b": [
{
"player_id": 4318,
"shirt_number": 1,
"player_events": []
},
{
"player_id": 4040,
"shirt_number": 23,
"player_events": []
},
{
"player_id": 3939,
"shirt_number": 2,
"player_events": []
},
{
"player_id": 3940,
"shirt_number": 6,
"player_events": []
},
{
"player_id": 3964,
"shirt_number": 5,
"player_events": [
{
"event_type": "Yellow",
"event_time": "34"
}
]
},
{
"player_id": 3954,
"shirt_number": 4,
"player_events": []
},
{
"player_id": 4368,
"shirt_number": 18,
"player_events": []
},
{
"player_id": 4244,
"shirt_number": 13,
"player_events": []
},
{
"player_id": 4082,
"shirt_number": 19,
"player_events": []
},
{
"player_id": 4305,
"shirt_number": 10,
"player_events": [
{
"event_type": "Yellow",
"event_time": "68"
}
]
},
{
"player_id": 171045,
"shirt_number": 11,
"player_events": []
}
]
},
"bench": {
"team_a": [
{
"player_in_id": 8329,
"player_in_shirt_number": 10,
"player_out_id": 4281,
"player_out_time": " 65'",
"player_in_events": []
},
{
"player_in_id": 4225,
"player_in_shirt_number": 9,
"player_out_id": 7325,
"player_out_time": " 75'",
"player_in_events": []
},
{
"player_in_id": 4010,
"player_in_shirt_number": 15,
"player_out_id": 7296,
"player_out_time": " 79'",
"player_in_events": []
},
{
"player_in_id": 4734,
"player_in_shirt_number": 11,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
},
{
"player_in_id": 4390,
"player_in_shirt_number": 27,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
},
{
"player_in_id": 4861,
"player_in_shirt_number": 25,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
},
{
"player_in_id": 7256,
"player_in_shirt_number": 8,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
}
],
"team_b": [
{
"player_in_id": 7445,
"player_in_shirt_number": 3,
"player_out_id": 4040,
"player_out_time": " 46'",
"player_in_events": []
},
{
"player_in_id": 4367,
"player_in_shirt_number": 12,
"player_out_id": 171045,
"player_out_time": " 59'",
"player_in_events": []
},
{
"player_in_id": 4089,
"player_in_shirt_number": 27,
"player_out_id": 4082,
"player_out_time": " 78'",
"player_in_events": []
},
{
"player_in_id": 4041,
"player_in_shirt_number": 26,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
},
{
"player_in_id": 2867,
"player_in_shirt_number": 20,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
},
{
"player_in_id": 4031,
"player_in_shirt_number": 14,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
},
{
"player_in_id": 4021,
"player_in_shirt_number": 25,
"player_out_id": -1,
"player_out_time": "-1",
"player_in_events": []
}
]
},
我正在尝试访问a队的球员id
我尝试使用两个foreach循环进行访问,如下所示
$match = json_decode($json, true); // Decode data to associative array
$match = $match['data'];
foreach ($match as $key=> $game){
foreach ($game['lineups'] as $key=> $lineup){
echo $lineup['team_a']['player_id'];
}}
输出为零。我也尝试过数字索引,比如echo$lineup[0]['player_id']
编辑为包含完整的JSON结构通过删除foreach循环并将其替换为for循环解决了这一问题,因为我知道需要执行循环多少次。然后我将数据添加到一个名为$lineupTeams的关联数组中,并使用另一个循环遍历每个值
$lineupTeams = array();
for ($x = 0; $x <= 10; $x++) {
$lineupTeams[] = array(
'home_stats_ID' => $match['lineups']['team_a'][$x]['player_id']
);
}
foreach ($lineupTeams as $game) {
echo $game['home_stats_ID'];
谢谢你的帮助。看起来应该是$lineup['team_a'][0]['player_id']谢谢@NigelRen,但也没有输出任何内容。这回答了你的问题吗?你的结构不清楚,因此很难指出错误。您是否尝试过任何调试?仅仅转储变量就可以帮助您找到假设错误结构的位置。此外,如果没有输出,您可能会收到一些未定义的索引通知。这不是有效的JSON。