如何打印嵌套JSON数组的值?PHP代码调试求助
问题分析与修复
原代码的错误点
第一段代码问题:
- 直接遍历整个JSON对象
$d,但实际需要遍历的是$d['value']这个数组 displayName不在$v['value']路径下,而是在每个value数组元素的properties字段内,正确路径为$item['properties']['displayName']
- 直接遍历整个JSON对象
第二段嵌套循环问题:
- 未定位到正确的
value数组入口,多层无差别循环导致输出混乱,没有精准指向目标字段
- 未定位到正确的
正确实现代码
先确保请求和JSON解析正常,再精准遍历目标数组获取数据:
$data = curl_exec($ch); // 验证curl请求是否成功 if ($data === false) { die('Curl请求失败'); } $d = json_decode($data, true); // 验证JSON解析是否正常 if (json_last_error() !== JSON_ERROR_NONE) { die('JSON解析失败: ' . json_last_error_msg()); } // 遍历目标数组并输出指定字段 if (isset($d['value']) && is_array($d['value'])) { foreach ($d['value'] as $item) { // 打印displayName echo $item['properties']['displayName'] . '<br>'; // 如需其他字段,比如严重级别,可直接扩展: // echo '严重级别:' . $item['properties']['severity'] . '<br>'; } } else { echo '未找到有效的数据集合'; }
核心逻辑说明
- 先做请求和解析的有效性校验,避免后续代码因数据异常报错
- 直接定位到
$d['value']数组,这是所有规则数据的存储集合 - 每个数组元素的
properties对象包含目标字段displayName,通过层级索引直接获取即可
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

