基于递归实现的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脚本的10个技巧(1)
Oct 09 PHP
发布一个用PHP fsockopen写的HTTP下载的类
Feb 22 PHP
php 备份数据库代码(生成word,excel,json,xml,sql)
Jun 23 PHP
php随机显示图片的简单示例
Feb 15 PHP
PHP源码分析之变量的存储过程分解
Jul 03 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
php判断文件上传图片格式的实例详解
Sep 30 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
在Laravel中使用MongoDB的方法示例
Nov 11 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 PHP
swoole锁的机制代码实例讲解
Mar 04 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/01/09 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
php实现Session存储到Redis
2015/11/11 PHP
php文件上传、下载和删除示例
2020/08/28 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
如何用webpack4带你实现一个vue的打包的项目
2018/06/20 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
Tensorflow简单验证码识别应用
2017/05/25 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
味多美官网:蛋糕订购,100%使用天然奶油
2017/11/10 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
企业治理工作自我评价
2013/09/26 职场文书
采购部部长岗位职责
2014/02/06 职场文书
空气环保标语
2014/06/12 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
离职报告格式
2014/11/04 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2014年公路养护工作总结
2014/12/04 职场文书
员工辞职信怎么写
2015/02/27 职场文书
同意落户证明
2015/06/19 职场文书
事业单位岗位说明书
2015/10/08 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers