`

树形导航菜单

 
阅读更多

原文出处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进行开发,旨在提供一种简洁、大气且易于使用的导航解决方案。 Bootstrap是一款广泛应用于前端开发的开源...

    18个精心整理的树形导航菜单

    在网页设计中,树形导航菜单是一种常见的交互元素,它能有效地组织大量信息,帮助用户快速定位和访问网站的不同部分。本资源包包含了18种精心整理的树形导航菜单,这些菜单各具特色,涵盖了多种技术和设计风格,旨在...

    漂亮的树形导航菜单.rar

    "漂亮的树形导航菜单"就是一个旨在提升用户体验的JS特效。这种菜单以树状结构展示,允许用户通过层级关系快速浏览和访问网站的内容。 树形导航菜单是一种常见的网页设计元素,它模仿了计算机文件系统中的目录结构。...

    树形导航菜单,本人珍藏

    树形导航菜单是一种常见的网页设计元素,用于组织和展示层级结构的数据或页面链接。这种菜单以树状的形式呈现,用户可以通过展开和折叠节点来浏览不同的层次。在本资源中,"树形导航菜单,本人珍藏" 提供了一个可...

    丰富多彩的树形导航菜单--样式美观

    在IT领域,树形导航菜单是一种常见的用户界面元素,它以树状结构展示信息层级,帮助用户高效地浏览和操作复杂的数据或功能。本资源"丰富多彩的树形导航菜单--样式美观"显然聚焦于设计美观且功能丰富的树形菜单,为...

    javascript树形导航菜单大全!!

    在网页设计中,树形导航菜单是一种常见的交互元素,它能有效地组织和展示层次结构的信息。JavaScript 是实现这种动态交互效果的重要工具。本资源包"javascript树形导航菜单大全"显然是一个集合了多种不同风格和功能...

    树形导航菜单例子

    在IT领域,树形导航菜单是一种常见的用户界面元素,尤其在网页设计和应用程序开发中扮演着重要角色。这种菜单以树状结构展示信息,允许用户通过层级关系来探索和访问内容。下面,我们将深入探讨“树形导航菜单”的...

    一个扩展性很好的树形导航菜单

    在IT行业中,树形导航菜单是一种常见的用户界面元素,尤其在网页和应用程序设计中,它被广泛用于组织和展示层次化的数据。这个“一个扩展性很好的树形导航菜单”资源,据描述,可能是开发者们难得一见的高效解决方案...

    漂亮的css+div右则树形导航菜单

    "漂亮的css+div右则树形导航菜单"就是一个利用CSS(层叠样式表)和HTML的div元素创建的视觉效果良好的右侧树状结构的导航菜单。这种设计方式既符合现代网页的审美标准,又具有良好的用户体验。 CSS是网页样式和布局...

    两种二级树形导航菜单样式

    本文将深入探讨“两种二级树形导航菜单样式”,这些样式来源于懒人建站网站,非常适合用于构建清晰、易用的网页界面。 首先,我们要理解什么是二级树形导航菜单。树形结构是一种数据组织方式,它模拟了自然界中的树...

    js树形导航菜单制作垂直js导航条特效

    而树形导航菜单,尤其在内容层次结构复杂时,能够提供清晰的层级展示,使用户更容易理解和操作。本教程将专注于如何使用JavaScript来创建一个垂直的、具有展开/收缩效果的树形导航条。 首先,我们需要理解基础的...

    纯js实现树形导航菜单

    在网页设计中,树形导航菜单是一种常见的交互元素,它能有效地组织和展示层次结构的信息。本主题将深入探讨如何使用纯JavaScript(JS)来实现这样的功能,无需依赖任何外部库或框架。以下是对实现这一功能所需技术点...

    jquery树形导航菜单插件制作滑动多级二级下拉菜单展示

    本文将深入探讨如何使用jQuery来创建一个树形导航菜单,它具有滑动效果的多级二级下拉菜单功能,并且支持无限层级的嵌套。 首先,jQuery是一个轻量级的JavaScript库,它的API简洁易用,使得动态操作DOM(文档对象...

    Css3折叠菜单-可展开的树形导航菜单.rar

    Css3折叠菜单-可展开的树形导航菜单,其实就是折叠、展开式的菜单,应用了HTML5重绘而成,无使用jquery,完全CSS3技术实现,面向Android手机等移动终端设备浏览,请注意不要使用IE等浏览器查看效果。

    几种树形导航菜单……

    在网页设计中,树形导航菜单是一种常见的交互元素,它以层级结构展示网站内容,帮助用户高效地浏览和定位信息。这种菜单通常由节点(包括父节点和子节点)组成,用户可以通过展开和折叠节点来探索不同的内容层级。在...

    扩展性非常好的树形导航菜单

    在IT领域,尤其是在Web开发中,树形导航菜单是一种常见的用户界面元素,它允许用户以层级结构浏览和操作数据。这种菜单通常用于网站的侧边栏或者后台管理系统中,便于用户快速定位和访问多级目录或功能。在这个场景...

    jquery.tree.js树形导航菜单插件

    《jQuery.tree.js:构建高效树形导航菜单的插件解析》 在网页设计与开发中,树形导航菜单是一种常见的用户界面元素,它能够清晰地展示层级关系,帮助用户更有效地浏览和理解网站结构。jQuery.tree.js是一款专门用于...

    js树形导航菜单制作点击展开收缩二级菜单

    在JavaScript编程中,树形导航菜单是一种常见的网页交互元素,尤其在网站的侧边栏、内容目录或文件管理系统中广泛使用。它通过层级结构展示数据,允许用户通过点击展开或收缩节点来查看或隐藏子菜单。本文将深入探讨...

Global site tag (gtag.js) - Google Analytics