如何解决通过 PHP 实现动态菜单
下面的代码正确生成了一个带有 UL 和 LI 的菜单,但我需要添加其他信息以使代码有所不同。
<?php
$items = array ( 1 => array ( 'parent' => '0','tit_pag' => 'Inicial','url_pag' => '/','target_url' => '_self','id' => '1',),2 => array ( 'parent' => '0','tit_pag' => 'Principal 1','id' => '2','child' => array ( 3 => array ( 'parent' => '2','tit_pag' => 'Item 1','url_pag' => 'link1.html','id' => '3',4 => array ( 'parent' => '2','tit_pag' => 'Item 2','url_pag' => 'link2.html','id' => '4',5 => array ( 'parent' => '2','tit_pag' => 'Item 3','url_pag' => 'link3.html','id' => '5',6 => array ( 'parent' => '0','tit_pag' => 'Principal 2','url_pag' => '#','id' => '6','child' => array ( 7 => array ( 'parent' => '6','tit_pag' => 'Item 4','url_pag' => 'link4.html','id' => '7',8 => array ( 'parent' => '6','tit_pag' => 'Item 5','url_pag' => 'link5.html','id' => '8',9 => array ( 'parent' => '6','tit_pag' => 'Item 6','url_pag' => 'link6.html','id' => '9',10 => array ( 'parent' => '0','tit_pag' => 'Principal 3','url_pag' => 'link7.html','id' => '10',11 => array ( 'parent' => '0','tit_pag' => 'Principal 4','url_pag' => 'link8.html','id' => '11',);
function get_menu($items) {
$html = "<ul>";
foreach($items as $key=>$value) {
$html.= '<li><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'">'.$value['tit_pag'].'</a>';
if(array_key_exists('child',$value)) {
$html .= get_menu($value['child'],'child');
}
$html .= "</li>";
}
$html .= "</ul>";
return $html;
}
print get_menu($items);
?>
以上代码的结果
<ul>
<li><a href="//" target="_self">Inicial</a></li>
<li>
<a href="//" target="_self">Principal 1</a>
<ul>
<li><a href="/link1.html" target="_self">Item 1</a></li>
<li><a href="/link2.html" target="_self">Item 2</a></li>
<li><a href="/link3.html" target="_self">Item 3</a></li>
</ul>
</li>
<li>
<a href="/#" target="_self">Principal 2</a>
<ul>
<li><a href="/link4.html" target="_self">Item 4</a></li>
<li><a href="/link5.html" target="_self">Item 5</a></li>
<li><a href="/link6.html" target="_self">Item 6</a></li>
</ul>
</li>
<li><a href="/link7.html" target="_self">Principal 3</a></li>
<li><a href="/link8.html" target="_self">Principal 4</a></li>
</ul>
我需要的结果
<ul class="nav navbar-nav">
<li><a href="//" target="_self">Inicial</a></li>
<li class="dropdown submenu">
<a href="//" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 1 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul class="dropdown-menu">
<li><a href="link1.html" target="_self">Item 1</a></li>
<li><a href="link2.html" target="_self">Item 2</a></li>
<li><a href="link3.html" target="_self">Item 3</a></li>
</ul>
</li>
<li class="dropdown submenu">
<a href="/#" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 2 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul class="dropdown-menu">
<li><a href="/link4.html" target="_self">Item 4</a></li>
<li><a href="/link5.html" target="_self">Item 5</a></li>
<li><a href="/link6.html" target="_self">Item 6</a></li>
</ul>
</li>
<li><a href="/link7.html" target="_self">Principal 3</a></li>
<li><a href="/link8.html" target="_self">Principal 4</a></li>
</ul>
我无法修改php代码来达到预期的效果。如果有人能帮助我,我将不胜感激。
解决方法
我设法通过创建另一个函数来解决它来生成子菜单
<?php
$items = array ( 1 => array ( 'parent' => '0','tit_pag' => 'Inicial','url_pag' => '/','target_url' => '_self','id' => '1',),2 => array ( 'parent' => '0','tit_pag' => 'Principal 1','id' => '2','child' => array ( 3 => array ( 'parent' => '2','tit_pag' => 'Item 1','url_pag' => 'link1.html','id' => '3',4 => array ( 'parent' => '2','tit_pag' => 'Item 2','url_pag' => 'link2.html','id' => '4',5 => array ( 'parent' => '2','tit_pag' => 'Item 3','url_pag' => 'link3.html','id' => '5',6 => array ( 'parent' => '0','tit_pag' => 'Principal 2','url_pag' => '#','id' => '6','child' => array ( 7 => array ( 'parent' => '6','tit_pag' => 'Item 4','url_pag' => 'link4.html','id' => '7',8 => array ( 'parent' => '6','tit_pag' => 'Item 5','url_pag' => 'link5.html','id' => '8',9 => array ( 'parent' => '6','tit_pag' => 'Item 6','url_pag' => 'link6.html','id' => '9',10 => array ( 'parent' => '0','tit_pag' => 'Principal 3','url_pag' => 'link7.html','id' => '10',11 => array ( 'parent' => '0','tit_pag' => 'Principal 4','url_pag' => 'link8.html','id' => '11',);
function get_submenu($items) {
$html2 = '<ul class="dropdown-menu">';
foreach($items as $key=>$value) {
$html2.= '<li><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'">'.$value['tit_pag'].'</a>';
if(array_key_exists('child',$value)) {
$html2 .= get_submenu($value['child'],'child');
}
$html2 .= "</li>";
}
$html2 .= '</ul>';
return $html2;
}
function get_menu($items) {
$html = '<ul class="nav navbar-nav">';
foreach($items as $key=>$value) {
if(array_key_exists('child',$value)) {
$html.= '<li class="dropdown submenu"><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'.$value['tit_pag'].' <i class="fa fa-angle-down" aria-hidden="true"></i></a>';
}else{
$html.= '<li><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'">'.$value['tit_pag'].'</a>';}
if(array_key_exists('child',$value)) {
$html .= get_submenu($value['child'],'child');
}
$html .= "</li>";
}
$html .= '</ul>';
return $html;
}
print get_menu($items);
?>
结果
<ul class="nav navbar-nav">
<li><a href="//" target="_self">Inicial</a></li>
<li class="dropdown submenu">
<a href="//" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 1 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul class="dropdown-menu">
<li><a href="/link1.html" target="_self">Item 1</a></li>
<li><a href="/link2.html" target="_self">Item 2</a></li>
<li><a href="/link3.html" target="_self">Item 3</a></li>
</ul>
</li>
<li class="dropdown submenu">
<a href="/#" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 2 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
<ul class="dropdown-menu">
<li><a href="/link4.html" target="_self">Item 4</a></li>
<li><a href="/link5.html" target="_self">Item 5</a></li>
<li><a href="/link6.html" target="_self">Item 6</a></li>
</ul>
</li>
<li><a href="/link7.html" target="_self">Principal 3</a></li>
<li><a href="/link8.html" target="_self">Principal 4</a></li>
</ul>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。