文档章节

php树型菜单

i
 iturtle
发布于 2014/11/14 12:13
字数 367
阅读 37
收藏 0
点赞 0
评论 0

通过处理array,添加level,is_leaf属性实现 树型菜单

公共类

  通过处理array,添加level,is_leaf属性实现 树型菜单
    /*树形分类添加节点属性
	 *$data, 要处理的节点数组
	 *$pid,	父类ID
	 *$prefix,  字段前缀 如chh_pid
	 *$tree   array()  
    **/

     function getTree($data, $pid,$prefix,$tree) {
 		
     	
        foreach($data as $k => $v)
        {
          
          $v[$prefix.'level'] = getLevel($data,$pid,1,$prefix);  //为每个节点计算层级

          if(hashChild($data,$v[$prefix.'id'],$prefix)){//判断每个节点是否有子节点
             $v['is_leaf'] =1;

          }else{

             $v['is_leaf'] =0;
          }


           if($v[$prefix.'pid'] == $pid)
           {         

            
             if(count($tree)==0){

                 $tree[] = $v;
             }else{

              array_push($tree, $v);
             }
            
            if(!empty($v[$prefix.'id']))
            	$tmp =  getTree($data, $v[$prefix.'id'],$prefix);//递归查找子节点
             
            if(count($tmp)>0){
             
              foreach ($tmp as $key => $value) {

                 array_push($tree, $value);
              }
             
            }
           
         }
        }
       
        return $tree;
    }

    /**  判断是否有子节点
    *$data, 要处理的节点数组
	 *$pid,	父类ID
	 *$prefix,  字段前缀 如chh_pid
	 */
     function hashChild($data,$id,$prefix) {
        foreach($data as $k => $v){
          if($v[$prefix.'pid'] == $id){
            return true;
          }
        }
        return false;

     }

    /**  获取等级
     *$data, 要处理的节点数组
	 *$pid,	父类ID
	 *$prefix,  字段前缀 如chh_pid
	 */
     function getLevel($data,$id,$level,$prefix) {
       if($level>100)  return $level;
        foreach($data as $k => $v){
           
          if($v[$prefix.'id']==$id){

              $re =  $v[$prefix.'pid'];
              $level++;
              if(!empty($v[$prefix.'pid']))
            	 $level =getLevel($data,$re,$level);
         }
        }
        
        return $level;

     }

    调用:

$lst=$Term ->field('term_id,term_name,term_pid') ->order('term_pid asc ,term_order asc')-> select();
$lst= getTree($lst,0,'term_',array());

    页面处理

<select class="form-control" name="term_id" style="width:500px"> 
<foreach name="termpid" item="v">
<option value="	{$v['term_id']}" <if condition="$v['term_id']  eq  $vo['term_id'] ">selected</if>>
<?php for ($i=1;$i<$v['term_level'];$i++){ ?>
&nbsp;
<?php } ?>
{$v['term_name']}</option>
</foreach>
</select>


© 著作权归作者所有

共有 人打赏支持
i
粉丝 0
博文 30
码字总数 9414
作品 0
广州
dtree.js树的使用

JS组件dtree轻松实现树型菜单:详细介绍应用dtree构建一个JavaScript树型菜单及其中参数配置说明 这几天写个网站,用了一个JavaScript写的树型菜单,有网友问我要这个代码,很奇怪,了解一下...

刘邵博 ⋅ 2012/11/13 ⋅ 0

Tree+Accordion+"Easyui-layout"+Tab框架

[ 分类面板+树型菜单+Tab标签+UI布局功能 ]实现后台框架 通过选择: 分类面板+树型菜单来选择菜单项, 再通过Tab标签实现菜单项内的详细内容增加。 Tab标签当中的详细内容部分可以通过直接选择...

Amamatthew ⋅ 2014/09/22 ⋅ 0

Ajax在线文件管理--SFBrowser

SFBrowser是一个开源的应用程序基于PHP与jQuery开发,拥有一个漂亮的Ajax界面来在线管理文件。 除了能够展示文件和文件夹功能外,还可以上传、删除、重命名和预览文件。上传可以通过Ajax或F...

匿名 ⋅ 2008/09/19 ⋅ 1

WinSCP链接服务器 关联Putty 日志中文乱码

WinSCP:下载地址 1, 打开WinSCP, 在登录会话界面中选定将要登录的会话. 2, 点击旁边的"编辑"按钮. 3, 在左侧树型菜单中找到"环境"项, 并打开它. 4, 在右侧中一项为"文件名UTF-8编码", 选择"...

orec ⋅ 2016/09/24 ⋅ 0

OpenJWebv1.2实现了树型功能的创建向导

在Java Web应用中,经常会遇到许多树型维护的功能,例如功能菜单树,网站栏目树,商品分类树,这些树的开发耗费了软件公司开发人员大量的开发时间.实际上,通过一个好的设计,树的功能是可以用一个通...

迷途d书童 ⋅ 2012/03/09 ⋅ 0

FTP Manage Tools--WEB FTP文件管理工具

(商用请联系作者获取授权,个人用户无限制) 简介 FTP Manage Tools(FTP管理工具)是一个基于WEB的FTP客户端程序,你可以通过它对你的FTP文件进行管理。 程序采用AJAX,由PHP+JQuery/JavaScri...

杜小豆 ⋅ 2016/04/14 ⋅ 0

善学记事本

基于Qt-GraphicsView的树型记事本,有兴趣可以下载玩玩。 本记事本实现的功能如下: 1.树型结构文件节点。 2.每个节点对应一份文件。 3.支持桌面停靠。 4.随系统自启动。 5.托盘菜单...

心路xinlu ⋅ 2014/07/27 ⋅ 0

vue for做树型菜单丢失节点

我用vue做树型菜单,刚开始可以正常显示,但树型节点展开收缩三四次后有些节点就不显示了,在google调试数据中可以看到那些没有显示的节点被自动加了display:none 第一次用vue,有没有与我遇...

疯狂的小潘 ⋅ 2017/03/02 ⋅ 0

XDebug 调试 php

调试代码是在开发环境下用于跟踪和定位问题根源的一种手段,虽然大部分问题在单元测试后可以有效避免。所谓金无赤金,代码也一样会存在BUG。 EclipsePHP提有非常强大的PHP编辑功能, 同样也提...

邪云子 ⋅ 2013/12/09 ⋅ 0

menus - 菜单管理app

以前的实现 在uliweb设计中,许多内容都是分布式可配置的。但是菜单却不是这样。一般的uliweb网站有两类的菜单,一种是导航菜单,比如首页上用来区分不同的大的功能,一般只有一层;另一种是...

limodou ⋅ 2013/10/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部