基于递归实现的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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
THINKPHP+JS实现缩放图片式截图的实现
Mar 07 PHP
php获取操作系统语言代码
Nov 04 PHP
网页上facebook分享功能具体实现
Jan 26 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
PHP未登录自动跳转到登录页面
Dec 21 PHP
php实现简单加入购物车功能
Mar 07 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
详解使用php-cs-fixer格式化代码
Sep 16 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
239军机修复记
2021/03/02 无线电
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
php中文繁体和简体相互转换的方法
2015/03/21 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
JavaScript设计模式之门面模式原理与实现方法分析
2020/03/09 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
Python获取当前时间的方法
2014/01/14 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
python生成词云的实现方法(推荐)
2017/06/13 Python
python3.x上post发送json数据
2018/03/04 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python如何从键盘获取输入实例
2020/06/18 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
JD Sports丹麦:英国领先的运动时尚零售商
2020/11/24 全球购物
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
费用会计岗位职责
2014/01/01 职场文书
社会实践感言
2014/01/25 职场文书
白血病捐款倡议书
2014/05/14 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
吴仁宝观后感
2015/06/09 职场文书
公司宣传语大全
2015/07/13 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书