Mailinglisten-Archive |
Hi, On Wed, Jun 22, 2005 at 04:12:58PM +0200, Aron Schlesinger wrote: > Am 22.06.2005 um 16:07 schrieb Raffael Schmid: > > > >> Hat jemand ne idee wie ich das elegant lösen kann? > > > >verschachtelte foreach? > > > > Dafür müsstest Du wissen wie viele ebenen das ganze hat. > Und das soll beliebig sein, wenn ich Michael richtig verstanden habe. > Das würde ich mir über einen Rekursive[0] Funktion zusammen bauen. Genau, so in der Art: --------------------------------Begin Code----------------------------- # Dummy-Daten # (sorry, das bekomme ich nicht auf 80 Zeichen Breite formatiert :-) $struct = array('50' => array('id' => '50', 'page_name' => 'index', '_SUB_PAGE_' => array('51' => array('id' => '51', 'page_name' => 'admin-website', '_SUB_PAGE_' => array('53' => array('id' => '53', 'page_name' => 'pages' ) ), ), '52' => array('id' => '52', 'page_name' => 'admin-projects', ), ) ) ); # das hier wird dein eindimensionales Array $simple_struct = array(); $path = ''; # Funktion aufrufen. Da direkt in die Referenz von $simple_struct # geschrieben wird ohne return-Wert. get_nodes($struct, $path, $simple_struct); # Und hier die eigentliche Funktion die sich rekursiv aufruft. function get_nodes($struct, $path, &$simple_struct){ foreach ($struct as $id => $values) { $simple_struct[$id]['id'] = $values['id']; $simple_struct[$id]['id'] = $values['id']; $simple_struct[$id]['page_name'] = $path . '/' . $values['page_name']; if (isset($values['_SUB_PAGE_']) && is_array($values['_SUB_PAGE_'])) { get_nodes($values['_SUB_PAGE_'], $simple_struct[$id]['page_name'], $simple_struct); } } } print_r($simple_struct); ---------------------------------End Code------------------------------ Gruss Jens
php::bar PHP Wiki - Listenarchive