我有一个多维数组,看起来像这样:递归遍历多维打造扁平阵列
$trees = array(
array(
'name' => 'Parent',
'__children' => array(
array(
'name' => 'Child'
),
array(
'name' => 'Second Child'
)
)
)
);
数组的深度是未知的,我需要递归平整。因此,它看起来更像是这样的:
array(
array(
'name' => 'Parent'
),
array(
'name' => 'Child'
),
array(
'name' => 'Second Child'
)
)
我觉得这样的事情可能工作:
public function flattenTree($trees, $tree = array())
{
foreach($trees as $item){
//$i = 1, 2, then 3
$i = count($tree);
$tree[$i] = array('name' => $item['name']);
if(isset($item['__children']))
$this->flattenTree($item['__children'], $tree);
}
return $tree;
}
但这只是给了我:(
Array
(
[0] => Array
(
[name] => Parent
)
)
我不确定该怎么办这是否有可能?
作为奖励,我真的需要输出数组看起来像这样(注意名称值cha中年):)
array(
array(
'name' => 'Parent'
),
array(
'name' => 'Parent Child'
),
array(
'name' => 'Parent Second Child'
)
)
非常感谢大家的帮助。期待解决方案。我很难过!
的可能重复的[如何拼合多维数组?](http://stackoverflow.com/questions/1319903/how-to-flatten-a-multidimensional-array) –
你不能指定没有索引的数组元素。我相信你现在得到了正确的输出 –
是你的问题是从数组中缺少子元素? –