原文出处http://renzhen.iteye.com/blog/1329949
想写树形导航菜单,然后各种百度,这里涉及到引用传递,写的蛮好的
/* 通过数据库获取所有元素,通过下面函数构造树形结构 */ private function getTree($menus) { $id = $level = 0; $menuobjs=array(); $tree = array(); $notrootmenu=array(); foreach($menus as $menu){ $menuobj=new stdClass(); $menuobj->menu=$menu; $id = $menu['id']; $level = $menu['father_id']; $menuobj->nodes = array(); $menuobjs[$id]=$menuobj; if ($level) { $notrootmenu[]=$menuobj; } else { $tree[] = $menuobj; } } foreach($notrootmenu as $menuobj){ $menu=$menuobj->menu; $id = $menu['id']; $level = $menu['father_id']; $menuobjs[$level]->nodes[]=$menuobj; } return $tree; } }
如果你想让自己的数组输出好看一些,可以做如下操作
可以按照json格式输出数组
echo "<pre>";print_r($arr);echo "<pre>";
整合一下我自己的输出
function setTree($tree){ foreach ($tree as $key=>$val){ $menu = $val->menu; $nodes = $val->nodes; $flag = str_repeat ("--",$menu["level"]); echo "<pre><font color=red>".$flag;print_r($menu["title"]);echo "</font></pre>"; if(!is_null($nodes)){ setTree($nodes); } } }
最后写一下数据格式
//数据输出 a --c ----f --d b --e //数据格式 Array ( [0] => Nav Object ( [menu] => Array ( [id] => 1 [title] => a [url] => a [father_id] => 0 [level] => 0 ) [nodes] => Array ( [0] => Nav Object ( [menu] => Array ( [id] => 3 [title] => c [url] => c [father_id] => 1 [level] => 1 ) [nodes] => Array ( [0] => Nav Object ( [menu] => Array ( [id] => 6 [title] => f [url] => f [father_id] => 3 [level] => 2 ) [nodes] => Array ( ) ) ) ) [1] => Nav Object ( [menu] => Array ( [id] => 4 [title] => d [url] => d [father_id] => 1 [level] => 1 ) [nodes] => Array ( ) ) ) ) [1] => Nav Object ( [menu] => Array ( [id] => 2 [title] => b [url] => b [father_id] => 0 [level] => 0 ) [nodes] => Array ( [0] => Nav Object ( [menu] => Array ( [id] => 5 [title] => e [url] => e [father_id] => 2 [level] => 1 ) [nodes] => Array ( ) ) ) ) )
相关推荐
左侧黑色树形导航菜单,bootstrap风格,简单大气,jquery开发,很好看的树形菜单框架,绝对值得下载,简单容易改造
漂亮的树形导航菜单
树形导航菜单,可以随意修改,比较好用。 树形导航菜单,可以随意修改,比较好用。 本人珍藏
Css3折叠菜单-可展开的树形导航菜单,其实就是折叠、展开式的菜单,应用了HTML5重绘而成,无使用jquery,完全CSS3技术实现,面向Android手机等移动终端设备浏览,请注意不要使用IE等浏览器查看效果。
漂亮的css+div右则树形导航菜单 效果不错 比较大众化。
js树形导航菜单制作一个垂直纵向js导航条只设置导航二级菜单分类,点击显示隐藏二级菜单目录。内含js代码下载。
各种各样的树形导航菜单,二级菜单。。。。。一定会有一个适合你!!
丰富多彩的树形导航菜单,样式美观。详情请进入里面解压查看。
jquery树形导航菜单插件制作一个类似树形展示的slider滑动多级二级下拉菜单目录,支持无限嵌套。jquery插件,jquery下载。
一个扩展性很好的树形导航菜单,很不容易弄到的
扩展性非常好的树形导航菜单,
jquery.tree.js树形导航菜单插件
基于XML的可灵活配置树形导航菜单的设计实现,李朔,,树形导航菜单是企业WEB应用常见的界面元素。分析了静态设计生成树形导航菜单的缺点,基于XML,提出一种在ASP.NET环境下通过定义配置��
js树形导航菜单制作点击展开收缩二级菜单
几种不同树形导航菜单,相信对于学习网页的人会有用处的
精心整理各种导航菜单,值得学习和推荐!稍微修改即可利用!div+css+js实现菜单的收缩与展开QQ菜单可折叠,JS+CSS很漂亮爆炸式菜单,点击后展开标签在左侧的CSS竖向简洁选项卡。
纯js效果实现导航菜单功能。可以直接把代码复制到页面上使用。
常用树形导航栏菜单,合闭效果,提供源码、样式单及图片