基于递归实现的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+mysql)
Nov 23 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP异步调用socket实现代码
Jan 12 PHP
php去除HTML标签实例
Nov 06 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
Dec 24 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 PHP
Yii2框架中一些折磨人的坑
Dec 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数据类型转换
2014/01/09 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
php验证手机号码
2015/11/11 PHP
JQuery实现倒计时按钮的实现代码
2012/03/23 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
vue axios同步请求解决方案
2017/09/29 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
python rsa 加密解密
2017/03/20 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
计生个人工作总结
2015/02/28 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
会计专业自荐信范文
2019/05/22 职场文书
七年级作文之秋游
2019/10/21 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS