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;
        }
    
    }
  • 相关阅读:
    vue单页应用项目加入百度统计代码
    关于VUE Spa 项目html5-History模式在微信浏览器内IOS和安卓分享的问题
    iphone 上使用contenteditable 输入法无法换行
    javaScript 三目运算符初探
    javaScript for in循环遍历对象
    javaScript 原型与原型链学习笔记
    javaScript call与apply学习笔记
    javaScript 对象学习笔记
    javaScript 立即执行函数学习笔记
    javaScript [[scope]]学习笔记
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/12985875.html
Copyright © 2011-2022 走看看