Skip to content

PHP: Verschachtelte Listen aus Arrays erzeugen (array2list)

von dennis

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>

Aus → PHP

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS

*