博主信息
博文 53
粉丝 3
评论 0
访问量 66955
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
20020117-使用递归方法来格式化菜单-php培训线上九期班
邯郸易住宋至刚
原创
892人浏览过

使用递归来获取树形菜单的方法

方法一

  1. private function getTreeItems($items)
  2. {
  3. $tree = [];
  4. foreach ($items as $item){
  5. if (isset($items[$item['pid']])){
  6. $items[$item['pid']]['children'][] = &$items[$item['mid']];
  7. }else{
  8. $tree[] = &$items[$item['mid']];
  9. }
  10. }
  11. return $tree;
  12. }

方法二

  1. private function getTree($items,$pid=0)
  2. {
  3. $tree = [];
  4. foreach ($items as $item){
  5. if ($item['pid'] == $pid){
  6. $tree[$item['mid']] = $item;
  7. $tree[$item['mid']]['children'] = $this->getTree($items,$item['mid']);
  8. }
  9. }
  10. return $tree;
  11. }

将无线级菜单格式化为二给菜单的方法

  1. private function formatTree($items,&$res=[])
  2. {
  3. foreach ($items as $key => $item){
  4. if (isset($item['children'])){
  5. $tem = $item['children'];
  6. unset($item['children']);
  7. $res[] = $item;
  8. $this->formatTree($tem,$res);
  9. }else{
  10. $res[] = $item;
  11. }
  12. }
  13. return $res;
  14. }

二级菜单前端遍历需要注意的问题

再进行第二级遍历进,一定要判断是否有二级菜单,如果没有判断,会报错

  1. <div class="menu_dropdown bk_2">
  2. @foreach($menus as $menu)
  3. <dl id="menu-article">
  4. <dt><i class="Hui-iconfont">&#xe616;</i> {{$menu['title']}}<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
  5. @if(isset($menu['children']) && $menu['children'])
  6. <dd>
  7. @foreach($menu['children'] as $m)
  8. <ul>
  9. <li><a href="javascript:;" controller = "{{$m['controller']}}" action = "{{$m['action']}}" onclick="menu_fire(this)"
  10. "title="资讯管理">{{$m['title']}}</a>
  11. </li>
  12. </ul>
  13. @endforeach
  14. </dd>
  15. @endif
  16. </dl>
  17. @endforeach
  18. </div>
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学