文档章节

php树型菜单

i
 iturtle
发布于 2014/11/14 12:13
字数 367
阅读 38
收藏 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
博文 53
码字总数 13774
作品 0
广州
私信 提问
Tree+Accordion+"Easyui-layout"+Tab框架

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

Amamatthew
2014/09/22
0
0
WinSCP链接服务器 关联Putty 日志中文乱码

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

orec
2016/09/24
22
0
OpenJWebv1.2实现了树型功能的创建向导

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

迷途d书童
2012/03/09
65
0
善学记事本

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

心路xinlu
2014/07/27
623
0
vue for做树型菜单丢失节点

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

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

没有更多内容

加载失败,请刷新页面

加载更多

新手也能看懂,消息队列其实很简单

该文已加入开源项目:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目,Star 数接近 16k)。地址:https://github.com/Snailclimb/JavaGuide. 本文内容思维导图: 消息...

阿里云官方博客
16分钟前
1
0
如何在Chrome浏览器中启动deviceready事件(尝试调试phonegap项目)?

我正在开发PhoneGap应用程序,我希望能够在Chrome中调试它,而不是在电话上调试。但是,我在onGetReady()函数中初始化我的代码,该函数在PhoneGap触发“deviceready”事件时触发。由于Chr...

kisshua
今天
9
0
nginx中部署vue打包后的静态文件

如何在nginx中部署静态资源就不描述了, 请看我的这篇博客 将vue脚手架项目打包后的静态文件放到nginx上, 发现有个问题, 即url上有#, 怎么去掉这个#呢. 1 项目中router的mode 路由的mode要为h...

克虏伯
今天
13
0
JS容易理解错误的地方

在这端代码执行的末尾,你会不会hi变量回事函数中的hi了?你会不会认为这不是按引用传递了? 对值传递和引用传递产生质疑了? 1 var hi = {};2 function sayHello(hi) { ...

器石_
今天
9
0
Java开发学习--MongoDB

之前只学过sql,第一次使用非关系型数据库。以前对于关系型数据库与非关系型数据库的概念很模糊,通过这次的学习对这两者有了一个清晰的概念。 主键 在MongoDB中,主键名叫"_id",如果在生成...

微笑向暖wx
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部