php小代码----树形菜单生成

<?php
header("Content-type:text/html; charset=UTF-8"); 
$mixTree = array();
/*
 * 每个结果中的重点数据两个一个是id一个是指向其父结点id的parent
 */
$mixTree[] = array(‘id‘=>0,‘val‘=>‘顶级菜单1‘,‘parent‘=>-1);
$mixTree[] = array(‘id‘=>1,‘val‘=>‘顶级菜单2‘,‘parent‘=>-1);
$mixTree[] = array(‘id‘=>2,‘val‘=>‘顶级菜单1下的二级菜单1‘,‘parent‘=>0);
$mixTree[] = array(‘id‘=>3,‘val‘=>‘顶级菜单1下的二级菜单2‘,‘parent‘=>0);
$mixTree[] = array(‘id‘=>4,‘val‘=>‘顶级菜单2下的二级菜单1‘,‘parent‘=>1);
$mixTree[] = array(‘id‘=>5,‘val‘=>‘顶级菜单1下的二级菜单2下的三级菜单1‘,‘parent‘=>3);

/*
 * 通过二维数组把上面的数据挂载成树
 */
$treeDatas = array();
foreach($mixTree as $nodeDatas){
    if($nodeDatas[‘parent‘]==-1){
        $treeDatas[-1][]=$nodeDatas;
    }else{
        $treeDatas[$nodeDatas[‘parent‘]][]=$nodeDatas;
    }
}

/*
 * 遍历打印其父结点及其子结点
 */
function traverSesing($nodeDatas,$treeDatas){
    echo $nodeDatas[‘val‘];
    if(!empty($treeDatas[$nodeDatas[‘id‘]])&& is_array($treeDatas[$nodeDatas[‘id‘]])){
        echo ‘<ul>‘;
        foreach($treeDatas[$nodeDatas[‘id‘]] as $childNodeDatas){
            echo ‘<li>‘;
            traverSesing($childNodeDatas, $treeDatas);
            echo ‘</li>‘;
        }
        echo ‘</ul>‘;
    }
    
}
 echo ‘<ul>‘;
foreach($treeDatas[-1] as $nodeDatas){
    echo ‘<li>‘;
    traverSesing($nodeDatas, $treeDatas);
    echo ‘</li>‘;
}
echo ‘</ul>‘;

执行结果如图:

时间: 2024-10-29 19:13:32

php小代码----树形菜单生成的相关文章

Unity UGUI自定义树形菜单(TreeView)

先上几张效果图:          如果你需要的也是这种效果,那你就来对地方了! 目前,我们这个树形菜单展现出来的功能如下: 1.可以动态配置数据源: 2.点击每个元素的上下文菜单按钮(也就是图中的三角形按钮),可以收缩或展开它的子元素: 3.可以单独判断某一元素的复选框是否被勾选,或者直接获取当前树形菜单中所有被勾选的元素: 4.树形菜单统一控制其下所有子元素按钮的事件分发: 5.可自动调节的滚动视野边缘,根据当前可见的子元素数量进行横向以及纵向的伸缩: 一.首先,我们先制作子元素的模板(Te

生成树形菜单

题记------学习别人的精髓,并加以总结,消化吸收,这就是提高!!! 动态生成树形菜单,前台用easyui实现,非常简单不赘述,主要给出后台java的逻辑代码 1 package com.gongli.util.entity.treeMenu; 2 3 4 5 /* 6 * 用于封装树形菜单,无具体表与之对应,根节点为-1,节点0,然后父节点0,节点001,父节点001,节点001001,001002,001...依次类推 7 */ 8 public class TreeMenu { 9 pr

使用jquery实现的多级树形菜单代码实例

使用jquery实现的多级树形菜单代码实例:树形菜单在网站中有大量的应用,这当然是因为它的独特优点,首先它可以有效的组织数据,使分类更为清晰明了,通常情况下树形菜单是可以折叠的,这样可以以更小的空间容纳更多的数据,下面就详细介绍一个使用jquery实现的属性菜单.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author&q

c#从数据库读取数据动态生成树形菜单

页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebTree.aspx.cs" Inherits="Tree.WebTree" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/

三行代码实现树形菜单(xmlTree标签实例)

引入树操作JavaScript脚本文件 <chinahtml file="help/tree/act.htm"/><!-- 引入树操作文件 --> 图片路径及节点编号首字符 <bag id=pPage><we name=imgPath>help/tree</we><we name=id>e</we></bag> 引入xml文件并显示树形菜单 <xmlTree id="@{pP

zTree 从数据库中动态加载树形菜单

这几天做动态菜单用到了这个插件,目前用的很广泛的一个开源框架,最新发布的QUI框架就是用这个插件开发的菜单部分,因此还是很值得深入研究和学习,通过使用感觉功能很丰富,好多函数不用自己开发和编写,官网上有很详尽的API可以参考,用着算顺手但学习使用的过程中也遇到了一些困难,听过反复测试和查资料都理解了,但也在思考一个问题,怎么样才能使得最快的时间从接触一个新东西到灵活掌握的程度? 这个不仅仅是一个树形结构的菜单,每个节点左边可以有一个复选框,看了看也挺简单的,只需要在setting里面配置一个ch

利用多叉树实现Ext JS中的无限级树形菜单(一种构建多级有序树形结构JSON的方法)

一.问题研究的背景和意义 目前在Web应用程序开发领域,Ext JS框架已经逐渐被广泛使用,它是富客户端开发中出类拔萃的框架之一.在Ext的UI控件中,树形控件无疑是最为常用的控件之一,它用来实现树形结构的菜单.TreeNode用来实现静态的树形菜单,AsyncTreeNode用来实现动态的异步加载树形菜单,后者最为常用,它通过接收服务器端返回来的JSON格式的数据,动态生成树形菜单节点.动态生成树有两种思路:一种是一次性生成全部树节点,另一种是逐级加载树节点(利用AJAX,每次点击节点时查询下

实用的树形菜单控件tree

 jQuery plugin: Treeview 这个插件能够把无序列表转换成可展开与收缩的Tree. jQuery plugin: Treeview  jQuery  jstree jsTree是一个基于jQuery的Tree控件.支持XML,JSON,Html三种数据源.提供创建,重命名,移动,删除,拖\放节点操作.可以自己自定义创建,删除,嵌套,重命名,选择节点的规则.在这些操作上可以添加多种监听事件.  jstree  jQuery UI Widgets  FileTreePanel F

一个基于jQuery的简单树形菜单

在工作中的项目使用的是一个前端基于 jQuery easyui 的一个系统,其中左侧的主菜单使用的是 easyui 中的 tree 组件,不是太熟悉,不过感觉不是太好用. 比如 easyui 中的 tree 需要单击分叉节点前的小三角,才能够展开或关闭节点.另外,它还必需要求浏览器在兼容模式下才能正常使用(这个项目中使用的 easyUI 是 1.2.2 版本,新版的 Tree 不存在该问题),很是不方便. 想修改又无从下手,所以有单独写一个简单的树形菜单的想法,趁下班的时间,抽空写了一个简单的J