PHP遍历JSON多维数组:循环输出格式不符的问题求助
修正PHP遍历多维数组的输出格式问题
原始JSON数据
[ { "Sports": { "Series": "Worldcup" }, "CricketTeams": { "India": "india.com", "Australia": "australia.com", "England": "england.com" } }, { "Sports": { "Series": "Places" }, "CricketTeams": { "Pune": "/pune", "Delhi": "/delhi", "Ranchi": "/ranchi/" } }, { "Sports": { "Series": "man of the match" }, "menuItems": { "Rohit": "rohit.com", "Kohli": "kohli.com" } }]
原始遍历代码
for($i = 0; $i < count($json_data); $i++) { echo "<br>"; foreach($json_data[$keys[$i]] as $item => $name) { echo $name['Series']; } }
期望输出
Worldcup India Australia England Places Pune Delhi Ranchi Man of the match Rohit Kohli
修正后的代码
命令行/纯文本输出版本
foreach ($json_data as $item) { // 输出Series名称 echo $item['Sports']['Series'] . "\n"; // 过滤掉Sports字段,获取对应的列表数组 $list = array_diff_key($item, ['Sports' => true]); // 遍历列表输出键名 foreach (reset($list) as $key => $value) { echo $key . "\n"; } // 每组之间添加空行分隔 echo "\n\n"; }
网页HTML输出版本
如果需要在网页中展示,将换行符替换为<br>标签:
foreach ($json_data as $item) { echo $item['Sports']['Series'] . "<br>"; $list = array_diff_key($item, ['Sports' => true]); foreach (reset($list) as $key => $value) { echo $key . "<br>"; } echo "<br><br>"; }
关键说明
- 用
foreach直接遍历$json_data,避免原始代码中未定义的$keys变量导致的错误,写法更简洁安全。 - 先直接输出当前项的
Series字段内容。 - 通过
array_diff_key过滤掉Sports键,自动适配CricketTeams或menuItems这类动态列表字段。 - 遍历列表时输出键名(如India、Rohit),而非对应的值,匹配你的期望输出需求。
- 每组结束后添加空行,实现分组分隔的效果。
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

