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;
        }
    
    }
  • 相关阅读:
    玩懂Log,打开Android大门(sundy深入浅出)之一
    ListView 中getView的原理+如何在ListView中放置多个item(android.widget.ListView)
    验证视图状态MAC失败问题正确的解决办法
    Coolite Extjs Store开发心得(转)
    Delphi进制转换
    得到Exitjs DataView中图片文件名
    C#文件常用操作
    Delphi中TList类应用
    代码优化的第一步是判定程序热点(转)
    Asp.net性能优化
  • 原文地址:https://www.cnblogs.com/jackzhuo/p/12985875.html
Copyright © 2011-2022 走看看