欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

php树菜单转化为一维菜单,php树型菜单 - iturtle的个人空间 - OSCHINA - 中文开源技术交流社区...

发布时间:2025/3/15 php 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 php树菜单转化为一维菜单,php树型菜单 - iturtle的个人空间 - OSCHINA - 中文开源技术交流社区... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

通过处理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());

页面处理

selected>

{$v['term_name']}

总结

以上是生活随笔为你收集整理的php树菜单转化为一维菜单,php树型菜单 - iturtle的个人空间 - OSCHINA - 中文开源技术交流社区...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。