Рекурсивный цикл по многомерному для создания плоского массива
У меня есть многомерный массив, который выглядит так:
$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
)
)
Я не уверен, как это сделать. Является ли это возможным?
В качестве бонуса мне действительно нужен выходной массив, чтобы он выглядел следующим образом (обратите внимание, что имя изменилось) :)
array(
array(
'name' => 'Parent'
),
array(
'name' => 'Parent Child'
),
array(
'name' => 'Parent Second Child'
)
)
Большое спасибо за помощь в этом. Ждем решений. Я в тупике!