• CMSPRESS-PHP无限级分类


    原博文地址:http://blog.sina.com.cn/s/blog_75ad10100101mrv0.html

    当你学习php无限极分类的时候,大家都觉得一个字“难”我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究。

    到网上一搜php无限极分类,很多,但好多都是一个,并且,写的很乱,代码很多,让我们怎么学习嘛,那些都不靠谱,还是自己捣鼓捣鼓无限极分类了。

    比如一个category表:有id, name, pid, sort 就这四个简单的字段,不要太复杂了。

    id    name          pid      sort
    1     PHP            0       1
    2     Javascript     0       2
    3     MySQL          0       3
    4     php类          1       1
    5     smarty         1       2
    6     私有方法       4       1
    7     jQuery         2       1


    category.class.php

    class Category {
       static public function sortOut($cate,$pid=0,$level=0,$html='--'){
             $tree = array();
             foreach($cate as $v){
                 if($v['id'] == $pid){
                      $v['level'] = $level + 1;
                      $v['html'] = str_repeat($html, $level);
                      $tree[] = $v;
                      $tree = array_merge($tree, self::sortOut($cate,$v['id'],$level+1,$html));
                 }
             }
             return $tree;
       }
    }


    这里的$cate是查询上面表获取的一个二维数组:这么就不写了

    下面是效果:


    id    name              pid   level     sort
    1     PHP                0      1         1
    4       --php类          1      2         1
    6       ----私有方法     4      3         1
    5       --smarty         1      2         2

    2     Javascript         0      1         2
    7       --php类          2      2         1
    3     MySQL              0      1         3



    到此,我们就实现了最简单的php无限极分类了,这个在工作中用的很多的。

    ----------------------------------------------


    好像不需要array_merge

    function tree(&$list,$pid=0,$level=0,$html='--'){
        static $tree = array();
        foreach($list as $v){
            if($v['pid'] == $pid){
                $v['sort'] = $level;
                $v['html'] = str_repeat($html,$level);
                $tree[] = $v;
                tree($list,$v['id'],$level+1);
            } 
        }
        return $tree;
    }


    大家知道分类多了,递归效率也就低了,所以,有了下面的算法:预排序遍历树算法进行无限分类

  • 相关阅读:
    在Linux(Ubuntu)下安装Arial、Times New Roman等字体
    Qt的安装和使用中的常见问题(简略版)
    Qt的安装和使用中的常见问题(详细版)
    机械+固态双硬盘时机械硬盘卡顿问题解决
    在Qt(C++)中与Python混合编程
    在Notepad++中快捷选中多行
    在Linux下访问Windows共享文件夹
    Ubuntu下U盘只读文件系统,图标上锁,提示无法修改
    使用Qt Installer Framework制作软件安装包
    Swoole练习 websocket
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/5219297.html
Copyright © 2020-2023  润新知