|
@@ -152,6 +152,40 @@ abstract class BaseService
|
|
|
return $arr;
|
|
return $arr;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ public static function buildTree($list,$pid_name='pid',$id_name='id')
|
|
|
|
|
+ {
|
|
|
|
|
+ // 创建映射表
|
|
|
|
|
+ $map = [];
|
|
|
|
|
+ foreach ($list as $item) {
|
|
|
|
|
+ $map[$item[$id_name]] = $item;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 找到顶级节点
|
|
|
|
|
+ $topLevelNodes = [];
|
|
|
|
|
+ foreach ($map as $key => $value) {
|
|
|
|
|
+ if (!isset($map[$value[$pid_name]])) {
|
|
|
|
|
+ $topLevelNodes[$key] = &$map[$key];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 构建树形结构
|
|
|
|
|
+ $tree = [];
|
|
|
|
|
+ foreach ($map as &$item) {
|
|
|
|
|
+ if (isset($item[$pid_name]) && isset($map[$item[$pid_name]])) {
|
|
|
|
|
+ $parent = &$map[$item[$pid_name]];
|
|
|
|
|
+ if (!isset($parent['children'])) {
|
|
|
|
|
+ $parent['children'] = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ $parent['children'][] = &$item;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $tree[] = &$item;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return $tree;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* @description: 实例化TG
|
|
* @description: 实例化TG
|
|
|
* @return {*}
|
|
* @return {*}
|