基于递归实现的php树形菜单代码


Posted in PHP onNovember 19, 2014

本文实例讲述了基于递归实现的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);

}

 

return $return;

}

由于递归的效率相对较低,如果注重程序效率的话,不要用此方法,或者对此方法进行改进使用。

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP+MYSQL的文章管理系统(二)
Oct 09 PHP
我的论坛源代码(五)
Oct 09 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
PHP 错误之引号中使用变量
May 04 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
PHP 命令行参数详解及应用
May 18 PHP
php模拟socket一次连接,多次发送数据的实现代码
Jul 26 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
php如何执行非缓冲查询API
Jul 22 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP 自动加载类原理与用法实例分析
Apr 14 PHP
php常用的url处理函数总结
Nov 19 #PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 #PHP
PHP中常用的字符串格式化函数总结
Nov 19 #PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 #PHP
PHP 读取和编写 XML
Nov 19 #PHP
PHP生成不重复随机数的方法汇总
Nov 19 #PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 #PHP
You might like
php tp验证表单与自动填充函数代码
2012/02/22 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
2016/09/11 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
js实现微信分享代码
2020/10/11 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
jQuery事件_动力节点Java学院整理
2017/07/05 jQuery
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
公司薪酬管理制度
2014/01/31 职场文书
个人买房协议书范本
2014/10/06 职场文书
2014年质量工作总结
2014/11/22 职场文书
质量保证书格式
2015/02/27 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
什么是SOLID
2022/03/24 Javascript
MYSQL如何查看操作日志详解
2022/05/30 MySQL