Рекурсивно цикл через многомерный для создания плоского массива

У меня многомерный массив, который выглядит так:

$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' ) ) 

Спасибо за тонну за помощь в этом. С нетерпением ждем решений. Я в тупике!