基于递归实现的php树形菜单代码
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-27 16:11:45 浏览: 评论:0
这篇文章主要介绍了基于递归实现的php树形菜单代码,采用了递归的方法遍历节点构造出树形菜单,是非常实用的技巧,需要的朋友可以参考下
本文实例讲述了基于递归实现的php树形菜单代码。分享给大家供大家参考。具体实现方法如下:
开发电子商务网站的时候,做了这个显示树形菜单的功能,用的递归实现的PHP树形菜单函数,具体代码如下:
- public function procCategory($sid,$pid){
- $return = array();
- $key = 0;
- static $arr = array(); //分类级别参考数组
- $sql = "select cid,pcid,name from shop_goods_catalog where sid='{$sid}' and pcid = '{$pid}'";
- $result = $this->__db->query($sql);
- while($row=$this->__db->fetchArray($result)){
- $nbsp = '';
- if($row['pcid']==0){
- $arr = array();
- }
- $arr[] = $row['pcid'];
- //顶级分类不添加树形结构标识。
- if($row['pcid']>0){
- //根据分类级别添加树形结构标识
- $key = array_search($row['pcid'],$arr);
- for($i=0;$i<$key;$i++){
- $nbsp .= ' ';
- }
- //重构分类级别参考数组
- if(count($arr)>1&&count(array_keys($arr,$row['pcid']))>1){
- $arr = array_slice($arr,0,$key+1);
- }
- }
- $row['name'] = $nbsp.$row['name'];
- $row['level'] = $key; //分类级别,0为顶级分类,1为二级分类,用于样式设定或其他需求
- $return[] = $row;
- $r = $this->procCategory($sid,$row['cid']);
- $return = array_merge($return,$r);
- }//www.phpfensi.com
- return $return;
- }
由于递归的效率相对较低,如果注重程序效率的话,不要用此方法,或者对此方法进行改进使用。
希望本文所述对大家的PHP程序设计有所帮助。
Tags: php树形菜单
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)