基于递归实现的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 相关文章推荐
推荐一篇入门级的Class文章
Mar 19 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
使用php来实现网络服务
Sep 15 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 PHP
通过table标签,PHP输出EXCEL的实现方法
Jul 24 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
php反射类ReflectionClass用法分析
May 12 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 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 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
vue实现购物车加减
2020/05/30 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
Python冒泡排序注意要点实例详解
2016/09/09 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
python pprint模块中print()和pprint()两者的区别
2020/02/10 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
提高python代码运行效率的一些建议
2020/09/29 Python
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
2014城乡环境综合治理工作总结
2014/12/19 职场文书
委托收款证明
2015/06/23 职场文书
法制工作总结2015
2015/07/23 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
不要在HTML中滥用div
2021/05/08 HTML / CSS
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
用Python实现屏幕截图详解
2022/01/22 Python
Vue router配置与使用分析讲解
2022/12/24 Vue.js