我有一个数组,其中保存了一个包含 100 多个元素的菜单,然后将其打印为 CSS 下拉菜单。有 5 个主菜单,其中有子菜单,其中一些有子菜单等等。现在我在打印它们时正在对循环进行硬编码,但我相信一定有一些聪明的方法可以做到这一点只需几行代码!这是数组的开头:
$menu = array(
array(
'title' => 'Travel tips',
'url' => 'travel-tips',
'sub' => array(
array(
'title' => 'Travel guide',
'url' => 'travel-guide'),
array(
'title' => 'Places to visit',
'url' => 'places-to-visit',
'sub' => array(
array(
'title' => 'Ahu Akivi',
'url' => 'ahu-akivi'),
array(
'title' => 'Ahu Tongariki',
'url' => 'ahu-tongariki'),
array(
'title' => 'Anakena',
'url' => 'anakena'),
array(
'title' => 'Orongo',
'url' => 'orongo'),
array(
'title' => 'Rano Kau',
'url' => 'rano-kau'),
array(
'title' => 'Rano Raraku',
'url' => 'rano-raraku'),
array(
'title' => 'Vinapu',
'url' => 'vinapu'))),
array(
'title' => 'Things to do',
'url' => 'things-to-do',
'sub' => array(
array(
'title' => 'Beaches',
'url' => 'beaches'),
array(
'title' => 'Church',
'url' => 'church'),
array(
'title' => 'Fishing',
'url' => 'fishing'),
...然后它继续下去。如何在不对循环进行硬编码的情况下,仅用几行代码递归地干净利落地循环这个循环?
最佳答案
如果您不想指定循环次数,您需要一个自调用函数。只需在每个循环中添加您想要的 div/类/格式。
function echoMenu($arr){
foreach($arr as $subArr){
if(!empty($subArr['sub'])){
echo "<a href='{$subArr['url']}'>{$subArr['title']}</a>";
echo "<div class='for-sub-links'>";
echoMenu($subArr['sub']);
echo "</div>";
}else{
echo "<div><a href='{$subArr['url']}'>{$subArr['title']}</a></div>";
}
}
}
关于php - 递归打印多维数组作为下拉菜单,而无需在 PHP 中进行硬编码循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520342/