基于递归实现的php树形菜单代码

2015-01-24信息快讯网

这篇文章主要介绍了基于递归实现的php树形菜单代码,采用了递归的方法遍历节点构造出树形菜单,是非常实用的技巧,需要的朋友可以参考下

本文实例讲述了基于递归实现的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+mysql实现无限分类实例详解
将FCKeditor导入PHP+SMARTY的实现方法
THINKPHP内容分页代码分享
php实现redis数据库指定库号迁移的方法
php模拟登陆的实现方法分析
php获取四位字母和数字的随机数的实现方法
WampServer下安装多个版本的PHP、mysql、apache图文教程
phpQuery让php处理html代码像jQuery一样方便
写一段简单的PHP建立文件夹代码
php采集自中央气象台范围覆盖全国的天气预报代码实例
制作安全性高的PHP网站的几个实用要点
解决phpcms更换javascript的幻灯片代码调用图片问题
推荐5款跨平台的PHP编辑器
php使用递归计算文件夹大小
9个经典的PHP代码片段分享
php递归json类实例
php实现的树形结构数据存取类实例
PHP图片处理之图片旋转和图片翻转实例
php常用的url处理函数总结
PHP调用wsdl文件类型的接口代码分享
PHP实现的简单三角形、矩形周长面积计算器分享
一个比较不错的PHP日历类分享
php创建和删除目录函数介绍和递归删除目录函数分享
PHP递归复制、移动目录的自定义函数分享
一个经典的PHP文件上传类分享
一个经典的PHP验证码类分享
一个经典实用的PHP图像处理类分享
微信公众号点击菜单即可打开并登录微站的实现方法
php使用ob_start()实现图片存入变量的方法
php基于str_pad实现卡号不足位数自动补0的方法
PHP利用func_get_args和func_num_args函数实现函数重载实例
php一行代码获取文件后缀名实例分析
php实现的css文件背景图片下载器代码
php无限极分类递归排序实现方法
php json转换成数组形式代码分享
PHP冒泡算法详解(递归实现)
phpnow php探针环境检测代码
Windows下的PHP安装pear教程
PHP实现数组递归转义的方法
php+mysql不用递归实现的无限级分类实例(非递归)
PHP无限分类(树形类)
©2014-2024 dbsqp.com