博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
无限级分类的一种实现方式
阅读量:4593 次
发布时间:2019-06-09

本文共 2604 字,大约阅读时间需要 8 分钟。

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 }

 

转载于:https://www.cnblogs.com/songjianming/p/11031318.html

你可能感兴趣的文章
bzoj1396 识别子串
查看>>
Android开发六:常用控件3--ListView(一)
查看>>
Wormholes (bellman)
查看>>
[ 产品经理 ] 产品经理的一天工作内容
查看>>
依赖倒转原则
查看>>
Dubbo分布式服务框架入门(附project)
查看>>
A2-02-14.DML- MySQL LEFT JOIN
查看>>
char与CString相互转换
查看>>
jQuery Ajax总结
查看>>
制作Visual Studio 2019 (VS 2019) 离线安装包
查看>>
JavaScript高级程序设计学习笔记--变量、作用域和内存问题
查看>>
Smack 结合 Openfire服务器,建立IM通信,发送聊天消息
查看>>
所闻所获4:下拉刷新控件2
查看>>
程序猿,你为什么须要一台mac?
查看>>
Cygwin下vim按方向键出现ABCD;
查看>>
android用shape画虚线,怎么也不显示
查看>>
javascript小白学习指南0---1
查看>>
【求助】怎样实如今并肩看中增加代码啊
查看>>
创业路(VC Pipeline),创业需要融资的阅读
查看>>
Effective C++:条款37:绝不又一次定义继承而来的缺省參数值
查看>>