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

如何在PHP中为数组内的对象递归添加层级

给层级化嵌套的PHP对象数组添加层级标记

嘿,这个需求用递归函数就能完美解决!不管你的数组嵌套有多深,递归都能自动遍历到每一层,给每个对象加上对应的层级值。

核心思路很简单:遍历每个对象时给它赋值当前层级,接着递归处理它的children子数组,同时把层级数加1,以此类推。

实现代码

function addTierToObjects(&$objects, $currentTier = 1) {
    foreach ($objects as &$obj) {
        // 为当前对象添加层级属性
        $obj->tier = $currentTier;
        
        // 检查是否存在子节点,递归处理子层级
        if (isset($obj->children) && is_array($obj->children) && !empty($obj->children)) {
            addTierToObjects($obj->children, $currentTier + 1);
        }
    }
}

// 使用示例:假设你的层级化数组是$hierarchyData
addTierToObjects($hierarchyData);

// 打印结果验证
print_r($hierarchyData);

代码说明

  • 用引用传递(&符号)处理数组和对象,这样直接修改原数据,无需额外返回结果,效率更高。
  • 默认起始层级设为1,刚好匹配你示例里的tier 1要求,如果你需要从0开始,把默认值改成0就行。
  • 加了严谨的判断:只有当children存在、是数组且不为空时才触发递归,避免空值或非数组类型导致的报错。
  • 不管嵌套多少层,递归都会自动深入处理,完全适配你说的“结构可能更深”的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:12:57