• 无限级分类的一种实现方式


    list返回子孙树列表
     1 /**
     2  * * list返回子孙树
     3  * @param array $list 原始列表
     4  * @param int $parentId 父id
     5  * @param int $level 几级子孙
     6  * @param string $space 空格占位
     7  * @date:2017.2.17
     8  * @return array
     9  */
    10 function treeList($list, $parentId = 0, $level = 0, $space = '  ')
    11 {
    12     static $bk = array();
    13     foreach ($list as $each)
    14     {
    15         if ($each['parent_id'] == $parentId)
    16         {
    17             $each['level'] = $level;
    18             $each['show'] = str_repeat($space, $level) . $each['name'];
    19             $bk[$each['id']] = $each;
    20             treeList($list, $each['id'], $level + 1, $space);//子孙紧跟在自己后面
    21         }
    22     }
    23     return $bk;
    24 }
    list返回子孙树数组
     1 /**
     2  * * list返回子孙树
     3  * @param array $list 原始列表
     4  * @param int $parentId 父id
     5  * @param int $level 几级子孙
     6  * @param string $space 空格占位
     7  * @date:2017.2.17
     8  * @return array
     9  */
    10 function treeArr($list, $parentId = 0, $level = 0, $space = '  ')
    11 {
    12     $bk = array();
    13     foreach ($list as $each)
    14     {
    15         if ($each['parent_id'] == $parentId)
    16         {
    17             $each['level'] = $level;
    18             $each['show'] = str_repeat($space, $level) . $each['name'];
    19             $each['sonArr'] = treeArr($list, $each['id'], $level + 1, $space);
    20             $bk[$each['id']] = $each;
    21         }
    22     }
    23     return $bk;
    24 }

    如果只需要所有层级名称

    /**
     * 获取所有层级名列表
     * @date:2017.2.17
     * @return array
     */
    function getFulNameList()
    {
        $listRaw = getList();
        $list = array();
        //一些处理
        foreach ($listRaw as $each)
        {
            $list[$each['id']] = iconvArray($each, 'GBK', 'UTF-8');//GBK->UTF-8
        }
        //加所有层级名
        foreach ($list as $id => $each)
        {
            $fulName = $list['name'];
            $parentId = $each['parent_id'];
            while ($parentId != 0 && $list[$parentId]['parent_id'] != 0)
            {
                $fulName = $list[$parentId]['name'].'_'.$fulName;
                $parentId = $list[$parentId]['parent_id'];
            }
            $list[$id]['fulName'] = $fulName;
        }
        return $list;
    }

    //获取所有子孙

     1 function getSpringId($selfId, $list)
     2 {
     3     $springIdArr = array();
     4     $parentIdArr = array($selfId => $selfId);
     5     do
     6     {
     7         $newSonArr = array();
     8         foreach ($list as $each)
     9         {
    10             if (isset($parentIdArr[$each['parent_id']]))
    11             {
    12                 $springIdArr[$each['id']] = $each['id'];
    13                 $newSonArr[$each['id']] = $each['id'];
    14             }
    15         }
    16         $parentIdArr = $newSonArr;//新一辈父
    17     } while (count($parentIdArr) > 0);
    18 
    19     return $springIdArr;
    20 }
  • 相关阅读:
    hbase权威指南PDF下载
    流畅的pythonPDF下载
    现代操作系统PDF下载
    Kafka权威指南PDF下载
    java核心技术卷1PDF下载
    计算机网络自顶向下方法PDF下载
    git gitlab 部署
    MySQL 索引、事务与存储引擎(详细解读)
    QT: Layout布局间消除间隙(修改layout内置参数)
    数据结构---归并排序
  • 原文地址:https://www.cnblogs.com/songjianming/p/11031318.html
Copyright © 2020-2023  润新知