ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-06-16 13:52:49  阅读:204  来源: 互联网

标签:方式 level parentId 分类 list 无限 each array id


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 }

 

标签:方式,level,parentId,分类,list,无限,each,array,id
来源: https://www.cnblogs.com/songjianming/p/11031318.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有