PHP: Verschachtelte Listen aus Arrays erzeugen (array2list)
Aus folgendem Eingabe Array soll eine verschachtelte HTML – Liste werden:
Eingabe-Array:
$menu = array( 0 => array( 'title' => 'Home', 'id' => 1, ), 1 => array( 'id' => 2, 'title' => 'Team', 'subs' => array( 0 => array( 'id' => 3, 'title' => 'Michael', ), 1 => array( 'id' => 4, 'title' => 'Tim', ), 2 => array( 'id' => 5, 'title' => 'Dennis', 'subs' => array( 0 => array( 'id' => 6, 'title' => 'Lebenslauf', ), 1 => array( 'id' => 7, 'title' => 'Zeugnisse', 'subs' => array( 0 => array( 'id' => 8, 'title' => 'Zeugnis 1', ), 1 => array( 'id' => 9, 'title' => 'Zeugnis 2', ), 2 => array( 'id' => 10, 'title' => 'Zeugnis 3', ), ), ), ), ), ), ), 2 => array( 'title' => 'Kontakt', 'id' => 6, ), );
Und nun, ein bisschen tricky, die passende PHP Funktion:
function array2list($arr, $menu = null) { $menu = '<ul>'; for($i=0; $i<count($arr); $i++) { $menu.='<li>'.$arr[$i]['title']; $menu.=(isset($arr[$i]['subs']))?array2list($arr[$i]['subs'],$menu):'</li>'; } return($menu.='</ul></li>'); } echo substr(array2list($arr),0,-5);
Erzeugt folgende Ausgabe:
<ul> <li>Home</li> <li>Team <ul> <li>Michael</li> <li>Tim </li> <li>Dennis <ul> <li>Lebenslauf</li> <li>Zeugnisse <ul> <li>Zeugnis 1</li> <li>Zeugnis 2</li> <li>Zeugnis 3</li> </ul> </li> </ul> </li> </ul> </li> <li>Kontakt</li> </ul>
No comments yet