基于递归实现的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 相关文章推荐
Gregarius中文日期格式问题解决办法
Apr 22 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
PHP自动识别字符集并完成转码详解
Aug 02 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
ThinkPHP文件上传实例教程
Aug 22 PHP
php中执行系统命令的方法
Mar 21 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
Jan 05 PHP
CodeIgniter常用知识点小结
May 26 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 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&amp;mysql(六)
2006/10/09 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
php扩展开发入门demo示例
2019/09/23 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
动态标签 悬停效果 延迟加载示例代码
2013/11/21 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
2020/04/21 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
将相和教学反思
2014/02/04 职场文书
保险经纪人求职信
2014/03/11 职场文书
企业承诺书怎么写
2014/05/24 职场文书
小学庆六一活动总结
2014/08/28 职场文书
莫言诺贝尔获奖感言(全文)
2015/07/31 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python