Вложенные 'for' циклы в PHP для создания иерархического неупорядоченного списка

Я пытаюсь создать вложенный неупорядоченный список с петлями php. Я пробовал разные вещи, но мне нужна ваша помощь для улучшения моего кода. Скажем в этом примере, что я хочу четыре уровня.

Вот мой PHP-код:

<ul> <?php for($i = 0; $i < 1; $i++): ?> <li> <ul> <?php for($j = 0; $j <2; $j++): ?> <li> <ul> <?php for($k = 0; $k <2; $k++): ?> <li> <ul> <?php for($l = 0; $l <2; $l++): ?> <li></li> <?php endfor; ?> </ul> </li> <?php endfor; ?> </ul> </li> <?php endfor; ?> </ul> </li> <?php endfor; ?> </ul> 

Вот мой вывод HTML:

 <ul> <li> <ul> <li> <ul> <li> <ul> <li></li> <li></li> </ul> </li> <li> <ul> <li></li> <li></li> </ul> </li> </ul> </li> <li> <ul> <li> <ul> <li></li> <li></li> </ul> </li> <li> <ul> <li></li> <li></li> </ul> </li> </ul> </li> </ul> </li> </ul> 

Есть ли более разумный способ сделать это? Я надеюсь, что это так. Я хотел бы знать, потому что я стремился определить количество уровней динамически, и то, что я сделал, совсем не динамично! 🙂

Большое спасибо за ваши ответы!

Вы можете использовать рекурсивные функции, если у вас есть массив в определенном формате.

1. Пример массива

 $arr = array( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', 'Aenean id erat et justo eleifend dapibus iaculis non diam.', array( 'Donec viverra mauris sit amet nulla semper sit amet venenatis urna elementum.', 'Aliquam bibendum arcu metus, vitae pellentesque felis.', 'Etiam eu erat est, sit amet mollis justo.', array( 'Cras luctus nulla vitae turpis bibendum rutrum.', 'Donec vel sem mi, eu viverra magna.', 'Aliquam non leo vitae turpis commodo malesuada.', 'Suspendisse congue nulla nec justo molestie convallis sodales dolor tincidunt.', array( 'Etiam blandit dictum metus, eget ullamcorper odio commodo eu.', 'Integer congue eros a mauris feugiat volutpat.', 'Sed nec diam sem, ac sollicitudin libero.', 'Phasellus vulputate tincidunt risus, vitae convallis nisi feugiat id.', 'Donec vehicula lobortis magna, sed euismod massa tristique sed.', ), ), 'Fusce vel sem sem, non volutpat nisi.', 'Pellentesque molestie ipsum vitae orci sodales iaculis.', ), ); 

2. Рекурсивная функция

 function list_it($data_array, $list_tag = 'ul') { // enforce valid list tag if ($list_tag != 'ul' && $list_tag != 'ol') $list_tag = 'ul'; // we need an array with data if (!is_array($data_array) || empty($data_array)) return; echo '<',$list_tag,'>'; foreach ($data_array as $element) { if (is_array($element)) { list_it($element); } else { echo '<li>',$element,'</li>'; } } echo '</',$list_tag,'>'; } list_it($arr, 'ul'); 

3. Выход (добавление HTML, добавленное мной, а не функция)

 <ul> <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li> <li>Aenean id erat et justo eleifend dapibus iaculis non diam.</li> <ul> <li>Donec viverra mauris sit amet nulla semper sit amet venenatis urna elementum.</li> <li>Aliquam bibendum arcu metus, vitae pellentesque felis.</li> <li>Etiam eu erat est, sit amet mollis justo.</li> <ul> <li>Cras luctus nulla vitae turpis bibendum rutrum.</li> <li>Donec vel sem mi, eu viverra magna.</li> <li>Aliquam non leo vitae turpis commodo malesuada.</li> <li>Suspendisse congue nulla nec justo molestie convallis sodales dolor tincidunt.</li> <ul> <li>Etiam blandit dictum metus, eget ullamcorper odio commodo eu.</li> <li>Integer congue eros a mauris feugiat volutpat.</li> <li>Sed nec diam sem, ac sollicitudin libero.</li> <li>Phasellus vulputate tincidunt risus, vitae convallis nisi feugiat id.</li> <li>Donec vehicula lobortis magna, sed euismod massa tristique sed.</li> </ul> </ul> <li>Fusce vel sem sem, non volutpat nisi.</li> <li>Pellentesque molestie ipsum vitae orci sodales iaculis.</li> </ul> </ul>