zoukankan      html  css  js  c++  java
  • PHP 无限分级类

    平时有用到的无限分级方法归纳:

    /**
     * 无限分级类
     * @author Administrator
     *
     */
    class Tree
    {
        //组合一维数组
        public static function unlimitForLevel($cate, $html = '├─', $pid = 0, $level = 0)
        {
            $arr = [];
            foreach ($cate as $v) {
                if ($v['pid'] == $pid) {
                    $v['level'] = $level + 1;
                    $v['html']  = str_repeat($html, $level);
                    $arr[]      = $v;
                    $arr        = array_merge($arr, self::unlimitForLevel($cate, $html, $v['id'], $level + 1));
                }
            }
    
            return $arr;
        }
    
        //组合多维数组
        public static function unlimitForLayer($cate, $pid = 0, $name = 'child')
        {
            $arr = [];
            foreach ($cate as $v) {
                if ($v['pid'] == $pid) {
                    $v[$name] = self::unlimitForLayer($cate, $v['id'], $name);
                    $arr[]    = $v;
                }
            }
    
            return $arr;
        }
    
        //传递子分类的id返回所有的父级分类
        public static function getParents($cate, $id)
        {
            $arr = [];
            foreach ($cate as $v) {
                if ($v['id'] == $id) {
                    $arr[] = $v;
                    $arr   = array_merge(self::getParents($cate, $v['pid']), $arr);
                }
            }
    
            return $arr;
        }
    
        //传递子分类的id返回所有的父级分类
        public static function getParentsIds($cate, $id)
        {
            $arr = [];
            foreach ($cate as $v) {
                if ($v['id'] == $id && $v['pid'] != 0) {
                    $arr[] = $v['pid'];
                    $arr   = array_merge(self::getParentsIds($cate, $v['pid']), $arr);
                }
            }
    
            return $arr;
        }
    
        //传递父级id返回所有子级id
        public static function getChildsId($cate, $pid)
        {
            $arr = [];
            foreach ($cate as $v) {
                if ($v['pid'] == $pid) {
                    $arr[] = $v['id'];
                    $arr   = array_merge($arr, self::getChildsId($cate, $v['id']));
                }
            }
    
            return $arr;
        }
    
        //传递父级id返回所有子级分类
        public static function getChilds($cate, $pid)
        {
            $arr = [];
            foreach ($cate as $v) {
                if ($v['pid'] == $pid) {
                    $arr[] = $v;
                    $arr   = array_merge($arr, self::getChilds($cate, $v['id']));
                }
            }
    
            return $arr;
        }
    
    }
  • 相关阅读:
    【持续更新】养成一些好的C++编程习惯,争做一个不让同事骂街的程序员
    Inno Setup界面美化
    QWebengineView页面不实时刷新的问题
    Qt封装窗口进dll须知
    Inno Setup打包工具
    【转载】排序方式整理(带演示GIF)
    MySQL遇见SELECT list is not in GROUP BY clause and contains nonaggre的问题
    JMeter测试TCP协议
    Win10微软拼音关闭Ctrl+Shift+B快捷键
    Hive 窗口函数使用(1)
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/12985875.html
Copyright © 2011-2022 走看看