基于递归实现的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二分法在IP地址查询中的应用
Aug 12 PHP
PHP 函数语法介绍一
Jun 14 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
用php解析html的实现代码
Aug 08 PHP
解析php中的escape函数
Jun 29 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
php获取QQ头像并显示的方法
Dec 23 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
PHP命名空间简单用法示例
Dec 28 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 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递归遍历删除文件的方法
2015/04/17 PHP
PHP中文竖排转换实现方法
2015/10/23 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
深入学习Bootstrap表单
2016/12/13 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
python显示生日是星期几的方法
2015/05/27 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
python代码区分大小写吗
2020/06/17 Python
学python最电脑配置有要求么
2020/07/05 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
使用CSS禁止textarea调整大小功能的方法
2015/03/13 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
幼师自荐信范文
2013/10/06 职场文书
2014年财务部工作总结
2014/11/11 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
三行辞职书范文
2015/02/26 职场文书
基石观后感
2015/06/12 职场文书
关于军训的感想
2015/08/07 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
vue基于Teleport实现Modal组件
2021/05/31 Vue.js