无限级分类在我们开发中显得举足轻重,会经常被人问到,而一般会用递归的方法来实现,但是递归又会难倒一批人。今天博主分享的这个稍微有点基础的phper都能学会,希望大家能喜欢。

一、先建立对应的数据库和表:

请注意pid和id的外键关联关系,最顶级的pid为0。

二、新建一个控制器,我就用默认的IndexController.class.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Tree{
    //定义一个空的数组
    static public $treeList array();
    //接收$data二维数组,$pid默认为0,$level级别默认为1
    static public function tree($data,$pid=0,$level = 1){
        foreach($data as $v){
            if($v['pid']==$pid){
                $v['level']=$level;
                self::$treeList[]=$v;//将结果装到$treeList中
                self::tree($data,$v['id'],$level+1);
            }
        }
        return self::$treeList ;
    }
}

接下来方法中调用

1
2
3
4
5
6
    public function index(){     
        $res=M('cate')->select();
        $res=Tree::tree($res);
        $this->cate=$res
        $this->display();
    }

三、前台模板页面中展示出来。

1
2
3
4
5
6
<ul>
<volist name='cate' id='vo'>
        <!--这里加padding-left样式是为了更能看出层级的效果-->    
    <li style="padding-left:{$vo['level']*20}px">{$vo.name}</li>
</volist>
</ul>

四、最终预览效果如下图所示:

到此,递归实现无限级分类的效果就实现了。

转载自:http://www.dawnfly.cn/article-1-235.html  破晓博客

thinkphp框架中使用递归实现无限级分类的更多相关文章

  1. 浅析Thinkphp框架中运用phprpc扩展模式

    浅析Thinkphp框架中应用phprpc扩展模式 这次的项目舍弃了原来使用Axis2做web服务端的 方案,改用phprpc实现,其一是服务端的thinkphp已集成有该模式接口,其二是phprpc ...

  2. 制作类似ThinkPHP框架中的PATHINFO模式功能(二)

    距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.ht ...

  3. PHP不使用递归的无限级分类

    不用递归实现无限级分类,简单测试了下性能比递归稍好一点点点,但写得太复杂了,还是递归简单方便点 代码: <?php $list = array( array('id'=>1, 'pid'= ...

  4. thinkphp 框架中的一部分方法解析

     1 thinkphp 框架 中判断输入的数值和数据库中的数值是否一致    首先 需要在view文件夹下建一个模板 名为zhuce.html <html> <head> &l ...

  5. Thinkphp框架中自定义修改success和error页面

    Thinkphp框架中自定义修改success和error页面 Thinkphp框架的默认success和error太难看,可以自定义设置,步骤如下: (注意:TP原框架中的success跳转有问题, ...

  6. thinkPHP框架中执行原生SQL语句的方法

    这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友 ...

  7. (实用篇)PHP递归实现无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...

  8. PHP迭代与递归实现无限级分类

    无限级分类是开发中常见的情况,因此本文对常见的无限极分类算法进行总结归纳. 1.循环迭代实现 $arr = [ 1=>['id'=>1,'name'=>'父1','father'=& ...

  9. PHP递归实现无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...

随机推荐

  1. PPII打不开 更改I.bat

    http://jingyan.baidu.com/article/3a2f7c2e7d277126afd6118d.html

  2. codeforces 600D Area of Two Circles' Intersection

    分相离,内含,想交三种情况讨论一下. 主要是精度和数据范围的问题,首先数据用long double,能用整型判断就不要用浮点型. 题目中所给的坐标,半径是整型的,出现卡浮点判断的情况还是比较少的. 最 ...

  3. void (*signal(int sig, void (*func) (int))) (int)理解

    http://blog.csdn.net/sever2012/article/details/8281271 1.signal( int sig, void (*func)(int))signal是一 ...

  4. 操作DOM -------JavaScrip

    本文摘要:http://www.liaoxuefeng.com/ 经常用到. 由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM. 始终记 ...

  5. axios使用思路总结

    一.Axios是什么?用来发送请求的对象,类似之前的ajax 二.如何使用? 目前只说get和post的使用方式.一共有两种. 直接使用配置项的方式,发送请求: 2.使用别名来发送请求 参考: htt ...

  6. k8s使用自定义证书将客户端认证接入到API Server

    自定义证书使用kubectl认证接入API Serverkubeconfig是API Server的客户端连入API Server时使用的认证格式的客户端配置文件.使用kubectl config v ...

  7. 【jenkins】【java】【tomcat】windows host key verification failed

    适用于windows系统 出现这个问题的原因tomcat启动的用户找不到本地公私钥路径 如果tomcat 启动时候选择 local system account (默认此选项),请把你的公私钥文件(i ...

  8. STM32的四种输出模式(转载)

    1.普通推挽输出(GPIO_Mode_Out_PP):   使用场合:一般用在0V和3.3V的场合.线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流.   使用方法:直接使用   输出电平 ...

  9. Linux5个数据段

        进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途不一而不尽相同,有些内存是事先静态分配和统一回 ...

  10. Codeforces Round #443 (Div. 2) C 位运算

    C. Short Program time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...