PHP-向多维数组添加级别

PHP-向多维数组添加级别,php,arrays,recursion,multidimensional-array,Php,Arrays,Recursion,Multidimensional Array,我有一个多维数组,我想为多维数组中的每个数组添加一个键和值。该值必须是数组在多维数组中的深度级别 例如: Array( [0] Array ( [id] 1 [parentid] null [0] Array ( [id] 101 [parentid] 1 [1] Array

我有一个多维数组,我想为多维数组中的每个数组添加一个键和值。该值必须是数组在多维数组中的深度级别

例如:

Array(
    [0] Array
        (
            [id] 1
            [parentid] null
            [0] Array
                (
                    [id] 101
                    [parentid] 1
    [1] Array
        (
            [id] 2
            [parentid] null
            [0] Array
                (
                    [id] 161
                    [parentid] 2
                    [children] Array
                        (
                            [0] Array
                                (
                                    [id] 300
                                    [parentid] 161
                                 )
预期产出:

Array(
    [0] Array
        (
            [id] 1
            [parentid] null
            [level] 1
            [0] Array
                (
                    [id] 101
                    [parentid] 1
                    [level] 2
    [1] Array
        (
            [id] 2
            [parentid] null
            [level] 1
            [0] Array
                (
                    [id] 161
                    [parentid] 2
                    [level] 2
                    [children] Array
                        (
                            [0] Array
                                (
                                    [id] 300
                                    [parentid] 161
                                    [level] 3
                                 )
}

}


我不知道它是否相关,但为什么不使用像这样的库呢
它具有针对此类问题构建的功能

// Get a node's ID
$id = $node->getId();

// Get the node's hierarchical level (1-based)
$level = $node->getLevel();

我不知道它是否相关,但为什么不使用像这样的库呢
它具有针对此类问题构建的功能

// Get a node's ID
$id = $node->getId();

// Get the node's hierarchical level (1-based)
$level = $node->getLevel();

您基本上希望使用一个递归函数,该函数与数组的

通过将参数
&$foo
与前面的
&
一起使用,可以将其指定为对该对象的引用

对于数组,它不会复制修改,而是对原始传递的数组执行修改

编辑在注释中添加了建议,以将
&value
作为参考

现场观看:


您基本上希望使用一个递归函数,该函数与数组的

通过将参数
&$foo
与前面的
&
一起使用,可以将其指定为对该对象的引用

对于数组,它不会复制修改,而是对原始传递的数组执行修改

编辑在注释中添加了建议,以将
&value
作为参考

现场观看:


您是如何做到这一点的?这应该没有那么困难,你可以检查那里:-你有什么尝试让这件事做?这应该没有那么难,你可以检查那里:-我认为它会帮助你。显然,因为否则你就不会发布它;)我使用这个函数来构建我的树结构。但我不知道如何将数组的当前级别添加到数组中。是否将级别存储在DB中?否,该级别尚未存储在数据库中。我正在尝试在数组中添加级别,并希望使用该数组在数据库中插入数据。我认为这会对您有所帮助。显然,否则您不会发布它;)我使用这个函数来构建我的树结构。但我不知道如何将数组的当前级别添加到数组中。是否将级别存储在DB中?否,该级别尚未存储在数据库中。我试图在数组中添加级别,并希望使用该数组在数据库中插入数据。可能是,但我尚未使用该库。可能是,但我尚未使用该库。小问题:我认为OP希望将
level
字段设置为数据的嵌套级别,而不是
id
字段。否则答案很好。小问题:我认为OP希望
level
字段设置为数据的嵌套级别,而不是
id
字段。否则答案很好。
// Get a node's ID
$id = $node->getId();

// Get the node's hierarchical level (1-based)
$level = $node->getLevel();
<?php
$array = [
    'hello' => 'world',
    'doing' => [
        'hello' => 'universe',
        'going' => [
            'hello' => 'existence'
         ],
        'moving' => [
            'answer' => 42,
        ]
    ]
];
function levelUp(&$array, $level = 1) 
//               ^-- See that one? that's the  magic.
{
    $array['level'] = $level;

    foreach($array as $key => &$value) {
    //                        ^-- important to add that & here too
        if(is_array($value)) {
            levelUp($value, $level + 1);
        }
    }
}
levelUp($array);
var_dump($array);