栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PHP / MySQL构建树菜单

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP / MySQL构建树菜单

我喜欢@mario的解决方案,并在防止过度使用方面进行了改进

<ul>
。我只是建议
ORDERBY
对您的SQL查询执行一个操作,以按您想要的顺序获取菜单(甚至可能建议将权重/序列列添加到架构中。

数据设置:

$menu = array( // Presumed to have been coming from a SQL SELECT, populated for demo.  array('id'=>1,'title'=>'Menu 1',          'parent_id'=>null),  array('id'=>2,'title'=>'Sub 1.1',         'parent_id'=>1),  array('id'=>3,'title'=>'Sub 1.2',         'parent_id'=>1),  array('id'=>4,'title'=>'Sub 1.3',         'parent_id'=>1),  array('id'=>5,'title'=>'Menu 2',          'parent_id'=>null),  array('id'=>6,'title'=>'Sub 2.1',         'parent_id'=>5),  array('id'=>7,'title'=>'Sub Sub 2.1.1',   'parent_id'=>6),  array('id'=>8,'title'=>'Sub 2.2',         'parent_id'=>5),  array('id'=>9,'title'=>'Menu 3',          'parent_id'=>null),);

处理:

function has_children($rows,$id) {  foreach ($rows as $row) {    if ($row['parent_id'] == $id)      return true;  }  return false;}function build_menu($rows,$parent=0){    $result = "<ul>";  foreach ($rows as $row)  {    if ($row['parent_id'] == $parent){      $result.= "<li>{$row['title']}";      if (has_children($rows,$row['id']))        $result.= build_menu($rows,$row['id']);      $result.= "</li>";    }  }  $result.= "</ul>";  return $result;}echo build_menu($menu);

输出:

<ul>  <li>Menu 1<ul>    <li>Sub 1.1</li>    <li>Sub 1.2</li>    <li>Sub 1.3</li>  </ul></li>  <li>Menu 2<ul>    <li>Sub 2.1<ul>      <li>Sub Sub 2.1.1</li>    </ul></li>    <li>Sub 2.2</li>  </ul></li>  <li>Menu 3</li></ul>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/416462.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号