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

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

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

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

Ответы на вопрос(3)

Ваш ответ на вопрос