让我说我在这里有阵列。我遗漏了一些地图和文件,因为这应该足以说明我的观点。阵列没有最大深度,因此可能会有更多深度。
Array
(
[media] => Array
(
[documents] => Array
(
[0] => add.php
)
[music] => Array
(
[albums] => Array
(
[0] => add.php
)
)
[overview] => Array
(
[0] => overview.php
)
)
我想得的是以下内容:
<ul>
<li>Media
<ul>
<li>Documents
<ul>
<li><a href="/media/documents/add.php">Add</a></li>
</ul>
</li>
<li>Music
<ul>
<li>Albums
<ul>
<li><a href="/media/music/albums/add.php">Add</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</li>Overview
<ul>
<li><a href="/overview/overview.php">Overview</a></li>
</ul>
</li>
</ul>
我找到php create navigation menu from multidimensional array dynamically但是接受的答案有很多垃圾,结果并不是我需要的。如果您想知道阵列是如何生成的,请告诉我。
提前感谢您的帮助
答案 0 :(得分:2)
您需要使用循环遍历数组的递归函数。像这样:
function outputMenu(array $array, $baseUrl = '/')
{
$html = '';
foreach ($array as $key => $item)
{
if (is_array($item))
{
$html .= '<li>'.$key.'<ul>';
$html .= outputMenu($item, $baseUrl.$key.'/');
$html .= '</ul></li>';
}
else
{
$html .= '<li><a href="'.$baseUrl.$item.'">'.ucfirst(substr($item, 0, -4)).'</a></li>';
}
}
return $html;
}
echo outputMenu($array);
答案 1 :(得分:0)
$array = array(
'media'=>array('documents'=>array('add.php'),
'music'=>array('albums'=>array('add.php'))),
'overview'=>array('overview.php')
);
print_link($array);
function print_link($arre){
foreach($arre as $key => $arr){
if(is_array($arr)){
echo '<li>'. $key .'<ul>';
print_link($arr);//echo '<li>'.$arr.'</li>';
echo '</ul><li>';
} else {
echo '<li>'.$arr.'</li>';
}
}
}
此任务需要一个函数