1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- /**
- * Created by PhpStorm.
- * User: NODELOG
- * Date: 16/7/16
- * Time: 下午7:51
- */
- namespace common\helpers;
- class Tree
- {
- /**
- * 把数据集转换成Tree
- * @param $list
- * @param string $pk
- * @param string $pid
- * @param string $child
- * @param int $root
- * @return array
- */
- public static function build($list, $pk='id', $pid = 'pid', $child = 'children', $root = 0) {
- // 创建Tree
- $tree = array();
- if(is_array($list)) {
- // 创建基于主键的数组引用
- $refer = array();
- foreach ($list as $key => $data) {
- $refer[$data[$pk]] =& $list[$key];
- }
- foreach ($list as $key => $data) {
- // 判断是否存在parent
- $parentId = $data[$pid];
- if ($root == $parentId) {
- $tree[] =& $list[$key];
- }else{
- if (isset($refer[$parentId])) {
- $parent =& $refer[$parentId];
- $parent[$child][] =& $list[$key];
- }
- }
- }
- }
- return $tree;
- }
- }
|