Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  php  >  正文 php递归算法 php递归函数无限级分类

php递归算法 php递归函数无限级分类

发布时间:2018-01-12   编辑:www.jquerycn.cn
php递归算法的例子,用php递归函数实现无限级分类,有需要的朋友参考下。

运用php递归算法实现的无限极分类:
数据库中,分类表(category)只有一张,里面主要包含字段有:主键ID,分类名name,父级PID,分类路径PATH,这四个字段应该是必须的,再插入一些测试数据,例如表中有如下数据:

php递归算法 a href=http://www.jbxue.com/tags/diguihanshu.html target=_blank class=infotextkey递归函数/a

首先,path字段,可能有些朋友对这个字段还不太理解,0-1-3其实这个表示是当前分类的所有父类,这样一目了然它的父类是开发语言->php->php函数->然后是当前分类,这样做就能很清楚的知道当前分类的深度,是第几级分类,然后可以根据这个字段值计算分类的缩进,并构造出树形菜单如下:
开发语言
|-  php
|-  |-  php函数
|-  |-  |-函数urlencode
|-  java
|-  |-  spring

用php写递归函数实现这个Tree菜单,为了方便直接使用thinkphp来演示查询吧。
 

复制代码 代码示例:

<
/**
* 作用:查询所有分类生成Tree菜单
* @param int $pid 父ID 默认从顶级开始查询
*/
function toTree($pid=0){
   //查询所有顶级分类
    //数据库连接在此就不多说了
    $model=M('Category');实例化模型
    //查询map条件
    $map=array(
        'pid'=>$pid,
    );
    //查询
    $data=$model->where($map)->select();
    //定义新数组 用来存生成的html树形菜单
    $html_array=array();
    //循环分类
    $html='';
    $padding=0;   //缩进
    foreach($data as $k=>$v){
        //根据path字段的值实现缩进
        $path=$v['path'];
        if($path&&strpos($v['path'],'-')){
            $path_array=@explode('-',$v['path']);
            $count=count($path_array)-1;
            $padding=$count*20; //下一级分类缩进20像素
        }
        //当前分类数据html
        $data_array[]='
'.$v['name'].'
';

         //递归开始查找下级分类
        $data_array[]=toTree($v['id']);//把当前分类的id当做父级Id进行递归
    }
     //foreach循环结束合并分类html数组
    $html.=implode('',$data_array());
    $html.='';
    //html树形菜单构造完成,就这么简单,so easy吧!
    return $html;
}

您可能感兴趣的文章:
php 递归 无限级分类并返回数组的例子
php实现的无极分类(递归)的代码
php写的一个递归实现无限分类生成下拉列表的函数
php用递归方法实现无限级分类的代码
php与mysql实现的无限级分类
提高php无限分类查询的效率(使用数组和递归)
有关php递归函数返回值的使用方法
使用php数组实现的无限分类(不使用数据库与用递归)
对ecshop中的无限级分类的分析
php把无限级分类生成数组的类

[关闭]