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数组吗?你可以发布你的代码来评估它吗?