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

PHP动态父子嵌套数组指定ID节点名称修改方法

PHP嵌套父子数组修改指定ID节点名称并返回原结构

需求说明

给定一个包含唯一id、name的动态嵌套父子结构PHP数组,需根据指定的唯一ID定位到对应节点,修改其name值后,返回保持原有层级结构的完整数组。

示例数组

$array = [
    [
        "id" => "31350880",
        "name" => "HOD",
        "children" => [
            [
                "id" => "57f94cd7",
                "parent_id" => "31350880",
                "name" => "New HOD",
                "children" => [
                    [
                        "id" => "e7f1c88b",
                        "parent_id" => "57f94cd7",
                        "name" => "Gold",
                        "children" => []
                    ]
                ]
            ]
        ]
    ],
    [
        "id" => "45881fa8",
        "name" => "Pictures",
        "children" => [
            [
                "id" => "770e6e20",
                "parent_id" => "45881fa8",
                "name" => "New Picture",
                "children" => [
                    [
                        "id" => "a403a8fa",
                        "parent_id" => "770e6e20",
                        "name" => "Silver",
                        "children" => []
                    ]
                ]
            ]
        ]
    ]
];

解决方案:递归遍历修改

利用递归遍历数组的每一个节点,匹配目标ID,找到后修改name值,同时保持原数组结构不变。

实现函数

function updateNodeName(&$array, $targetId, $newName) {
    foreach ($array as &$node) {
        // 匹配到目标节点,修改name
        if ($node['id'] === $targetId) {
            $node['name'] = $newName;
            return;
        }
        // 当前节点有子节点,递归遍历子节点
        if (!empty($node['children'])) {
            updateNodeName($node['children'], $targetId, $newName);
        }
    }
}

调用示例

比如要修改ID为770e6e20的节点名称为"Updated Picture":

// 调用函数修改节点
updateNodeName($array, '770e6e20', 'Updated Picture');

// 输出修改后的数组(可根据需求格式化输出)
print_r($array);

修改后的输出结果

修改后,原数组结构保持不变,目标节点的name已更新:

Array
(
    [0] => Array
        (
            [id] => 31350880
            [name] => HOD
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 57f94cd7
                            [parent_id] => 31350880
                            [name] => New HOD
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => e7f1c88b
                                            [parent_id] => 57f94cd7
                                            [name] => Gold
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

    [1] => Array
        (
            [id] => 45881fa8
            [name] => Pictures
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 770e6e20
                            [parent_id] => 45881fa8
                            [name] => Updated Picture
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => a403a8fa
                                            [parent_id] => 770e6e20
                                            [name] => Silver
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                        )

                )

        )

)

说明

  • 函数通过引用传递数组,避免复制整个大数组,提升效率;
  • 递归会遍历所有层级的节点,无论目标节点在哪个层级都能找到;
  • 因为ID是唯一的,找到目标节点后直接返回,无需继续遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:40:23