基于递归实现的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下打开URL地址的几种方法小结
May 16 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
Laravel路由研究之domain解决多域名问题的方法示例
Apr 04 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 PHP
php中的钩子理解及应用实例分析
Aug 30 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 神盾解密
2014/06/08 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
PHP中$_SERVER使用说明
2015/07/05 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
CI操作cookie的方法分析(基于helper类库)
2016/03/28 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
判断客户浏览器是否支持cookie的示例代码
2013/12/23 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
Python脚本实时处理log文件的方法
2016/11/21 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
Python函数参数操作详解
2018/08/03 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
OpenCV Python实现图像指定区域裁剪
2021/03/12 Python
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
《祁黄羊》教学反思
2014/04/22 职场文书
舞蹈专业求职信
2014/06/13 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
员工安全责任书范本
2014/07/24 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis