У меня многомерный массив, который выглядит так:
$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' ) )
Спасибо за тонну за помощь в этом. С нетерпением ждем решений. Я в тупике!