基于递归实现的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 远程关机操作的代码
Dec 05 PHP
php开发文档 会员收费1期
Aug 14 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
Jul 03 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
对比分析php中Cookie与Session的异同
Feb 19 PHP
PHP 搜索查询功能实现
Nov 29 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 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和ACCESS写聊天室(三)
2006/10/09 PHP
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
基于jQuery替换table中的内容并显示进度条的代码
2011/08/02 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
shiro授权的实现原理
2017/09/21 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
koa2实现登录注册功能的示例代码
2018/12/03 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
Python正规则表达式学习指南
2016/08/02 Python
python操作excel让工作自动化
2019/08/09 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
python代码实现猜拳小游戏
2020/11/30 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
新西兰Bookabach:查找全球度假屋
2020/12/03 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
最新教师自我评价分享
2013/11/12 职场文书
社团活动策划书范文
2014/01/09 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
公司感谢信范文
2015/01/22 职场文书
详解OpenCV曝光融合
2022/04/29 Python