zoukankan      html  css  js  c++  java
  • php+mysql网站无限级栏目分类-递归获取树形结构函数

    如果网站采用了无限级栏目结构,我们可以将网站所有栏目获取出来组成一个树形结构。
    数据库结构:


    函数代码:

    //获得指定文章分类的子分类组成的树形结构
     function cateTree($pid=0,$level=0){
        $cate=M('cate');
        $array=array();
        $tmp=$cate->where("pid='%d'",$pid)->select();
        if(is_array($tmp)){
            foreach($tmp as $v){
                $v['level']=$level;
                $array[count($array)]=$v;
                $sub=cateTree($v['id'],$level+1);
                if(is_array($sub))$array=array_merge($array,$sub);
            }
        }
        return $array;
     }
    复制代码

    效果[print_r(cateTree(0))]:

    Array
    (
      [0] => Array
      (
        [id] => 1
        [catename] => 测试分类
        [pid] => 0
        [status] => 0
        [level] => 0
      )
    
      [1] => Array
      (
        [id] => 5
        [catename] => 二级分类
        [pid] => 1
        [status] => 0
        [level] => 1
      )
    
      [2] => Array
      (
        [id] => 7
        [catename] => 三级分类2
        [pid] => 5
        [status] => 0
        [level] => 2
      )
    
      [3] => Array
      (
        [id] => 2
        [catename] => 测试分类
        [pid] => 0
        [status] => 0
        [level] => 0
      )
    
      [4] => Array
      (
        [id] => 4
        [catename] => 又来测试
        [pid] => 0
        [status] => 0
        [level] => 0
      )
    
      [5] => Array
      (
        [id] => 6
        [catename] => 二级分类二
        [pid] => 4
        [status] => 0
        [level] => 1
      )
    
      [6] => Array
      (
        [id] => 8
        [catename] => 三级测试
        [pid] => 6
        [status] => 0
        [level] => 2
      )
    )


    其中level表示其层级。
    格式化输出效果:

    方法仅供参考,有人说递归查询效率不好,其实在实际应用过程中我们可以把查询出来的内容放入缓存,然后修改栏目信息的时候更新缓存,不需要每次都来查询数据库。

  • 相关阅读:
    [转贴]Linux内核LTS长期支持版生命周期
    【转贴】Debian 10 "buster" 正式发布
    [百度经验]重置组策略的方法
    【转贴】我对测试工作的一些认识
    【转贴】使用sar进行性能分析
    【转贴】龙芯内核发展策略 已经支持k8s
    【转贴】优秀的龙芯Docker虚拟机解决方案
    Windows 2016 安装单机版本Oracle ASM 的简单说明
    【转贴】中标麒麟操作系统(龙芯版)与360安全浏览器完成产品兼容性互认证测试
    AQTime教程
  • 原文地址:https://www.cnblogs.com/dragondean/p/php-mysql-catetree.html
Copyright © 2011-2022 走看看