You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP遍历嵌套数组问题:JSON解码后仅获首个结果如何解决

解决PHP数组完整遍历的问题

你现在只拿到首个结果的核心原因是代码里硬编码了Tree1[0],只取了Tree1数组的第一个元素,没有遍历这个数组里的所有项。要实现完整遍历,需要在现有循环内再加一层循环来处理Tree1中的每一个元素。

修改后的基础遍历代码

foreach ($events as $event) {
    // 遍历 Tree1 数组内的所有元素
    foreach ($event['d']['Tree1'] as $treeItem) {
        echo $treeItem['Tree2']['Field1'] . '<br>';
        echo $treeItem['Tree2']['Field2'] . '<br>';
        echo $treeItem['Tree2']['Field3'] . '<br>';
        // 可选:添加分隔线区分不同的 Tree1 条目
        echo '<hr>';
    }
}

更健壮的版本(避免报错)

如果JSON解码后的数组可能存在结构不完整的情况,建议加上存在性检查,防止出现未定义索引的PHP错误:

foreach ($events as $event) {
    // 先确认 Tree1 是存在且为数组
    if (isset($event['d']['Tree1']) && is_array($event['d']['Tree1'])) {
        foreach ($event['d']['Tree1'] as $treeItem) {
            // 确认目标字段都存在后再输出
            if (isset($treeItem['Tree2']['Field1'], $treeItem['Tree2']['Field2'], $treeItem['Tree2']['Field3'])) {
                echo $treeItem['Tree2']['Field1'] . '<br>';
                echo $treeItem['Tree2']['Field2'] . '<br>';
                echo $treeItem['Tree2']['Field3'] . '<br>';
                echo '<hr>';
            }
        }
    }
}

原理说明

  • 外层foreach ($events as $event)负责遍历$events数组里的每一个顶级元素;
  • 新增的内层foreach ($event['d']['Tree1'] as $treeItem)则遍历每个$event下Tree1数组的所有子元素,这样就能把所有Field1/Field2/Field3的内容都输出出来了。

内容的提问来源于stack exchange,提问作者user9457408

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:28:14