基于递归实现的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下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
php变量作用域的深入解析
Jun 03 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
thinkphp数据查询和遍历数组实例
Nov 28 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
php把数组值转换成键的方法
Jul 13 PHP
分享10段PHP常用代码
Nov 11 PHP
php获取当前url地址的方法小结
Jan 10 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
laravel 使用auth编写登录的方法
Sep 30 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
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
php实现微信模板消息推送
2018/03/30 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
5种处理js跨域问题方法汇总
2014/12/04 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
67 个节约开发时间的前端开发者的工具、库和资源
2017/09/12 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
微信小程序url传参写变量的方法
2018/08/09 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
js的对象与函数详解
2019/01/21 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
Python基础之文件读取的讲解
2019/02/16 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
大学生党员自我批评
2014/02/14 职场文书
事业单位考核材料
2014/05/21 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
感恩的心主题班会
2015/08/12 职场文书
《雷雨》教学反思
2016/02/20 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
python通过新建环境安装tfx的问题
2022/05/20 Python