Php 重新索引多维数组

Php 重新索引多维数组,php,arrays,recursion,Php,Arrays,Recursion,我希望将多维数组重新编制索引,如下所示: [ 0=>['id'=>1,'children'=>2],'id'=>3]], 4=>['id'=>5,'children'=>6],'id'=>7]] 8 => ... ] 如果我使用array\u walk\u recursive我得到: [ 0=>['id'=>1,'children'=>2],'id'=>3]], 1=>['id'=>4,'children'=>5],'id'=>6]] 2 => ... ] 这差不多了,但不完全是 array

我希望将多维数组重新编制索引,如下所示:

[
0=>['id'=>1,'children'=>2],'id'=>3]],
4=>['id'=>5,'children'=>6],'id'=>7]]
8 => ...
]
如果我使用
array\u walk\u recursive
我得到:

[
0=>['id'=>1,'children'=>2],'id'=>3]],
1=>['id'=>4,'children'=>5],'id'=>6]]
2 => ...
]
这差不多了,但不完全是

array_walk_recursive($out, function(&$item, $key) {
        if($key == 'id')
        {
            $item = $this->_i;
            $this->_i++;
        }
    });

成功地解决了这个问题,但并不完美(我后来发现问题出在其他地方,代码处于概念验证状态)。如果其他人需要这种结构,请发布此消息

// restructure the array for reindexing
$out = [];
$k = 0;
foreach ($arr as $as) 
{
    $test = ['id' => $k, 'items' => $as];

    array_push($out, $test);
    $k++;
}

// reindex multidimensiona array
$i = 1;
array_walk_recursive($out, function(&$item, $key) {
    global $i;

    if($key == 'id')
    {
        $item = $i;
        $i++;
    }

});

// final array restructuring 
$res = [];
foreach($out as $oo)
{
    $firstKey = array_key_first($oo);
    $res[$oo[$firstKey]] = $oo['items'];
}

var_dump( $res );

这回答了你的问题吗?不是真的,我有一个数组,最多3级。你可以添加php数组吗?你可以发布你的代码来评估它吗?