基于递归实现的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 相关文章推荐
一个oracle+PHP的查询的例子
Oct 09 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
php解析json数据实例
Aug 19 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
PHP fclose函数用法总结
Feb 15 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 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生成图形验证码几种方法小结
2013/08/15 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
PHP中把有符号整型转换为无符号整型方法
2015/05/27 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
JavaScript canvas绘制圆弧与圆形
2020/02/18 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
python代码xml转txt实例
2020/03/10 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
详解使用CSS3的@media来编写响应式的页面
2017/11/01 HTML / CSS
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
厂区绿化方案
2014/05/08 职场文书
委托书的写法
2014/08/30 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
总结Python使用过程中的bug
2021/06/18 Python
springboot中的pom文件 project报错问题
2022/01/18 Java/Android