• thinkphp框架中使用递归实现无限级分类


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

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

    无限级分类之mysql数据库表

    请注意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  破晓博客

  • 相关阅读:
    0903编写ssh实现远程执行命令 并解决粘包问题
    学习日记0829 IP协议 子网掩码 端口TCP协议的三次握手 四次挥手 套接字socket
    学习日记0828单例 OSI七层协议
    学习日记0827异常处理 元类 自定义元类 自定义元类来实例化类 属性查找顺序
    函数装饰器
    函数对象
    参数
    函数
    文件操作
    字符编码
  • 原文地址:https://www.cnblogs.com/chengzhi59/p/6441634.html
Copyright © 2020-2023  润新知