基于递归实现的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 替换模板变量实现步骤
Aug 24 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
PHP操作MongoDB时的整数问题及对策说明
May 02 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
May 15 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 PHP
PHP curl使用实例
Jul 02 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
php格式文件打开的四种方法
Feb 24 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 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实现的debug log日志操作类实例
2016/07/12 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
在vue中使用echarts图表实例代码详解
2018/10/22 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
python插入数据到列表的方法
2015/04/30 Python
python获取外网ip地址的方法总结
2015/07/02 Python
Python内置函数reversed()用法分析
2018/03/20 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
大学生演讲稿范文
2014/01/11 职场文书
学校课外活动总结
2014/05/08 职场文书
股东授权委托书范本
2014/09/13 职场文书
刑事代理授权委托书
2014/09/17 职场文书
校园运动会广播稿
2014/10/06 职场文书
项目合作意向书
2015/05/08 职场文书
重温入党誓词主持词
2015/06/29 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书