Skip to content

Commit ab21ac6

Browse files
authored
Update TreeHelper.php
1 parent 2f2d32e commit ab21ac6

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

src/helper/TreeHelper.php

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,51 @@
44

55
class TreeHelper
66
{
7+
/**
8+
* @param $list
9+
* @param $title
10+
* @param $pid
11+
* @param $parentField
12+
* @param $child
13+
* @param $pk
14+
* @return array
15+
*/
16+
public static function getTree($list,$title = 'title',$pid=0, $parentField = 'pid', $child = 'children',$pk = 'id') {
17+
$tree = array();// 创建Tree
18+
if(is_array($list)) {
19+
// 创建基于主键的数组引用
20+
$refer = array();
21+
foreach ($list as $key => $data) {
22+
$refer[$data[$pk]] =& $list[$key];
23+
}
24+
foreach ($list as $key => $data) {
25+
$list[$key][$title] = lang($list[$key][$title]);
26+
// 判断是否存在parent
27+
$parentId = $data[$parentField];
28+
if ($pid == $parentId) {
29+
$tree[$data[$pk]] =& $list[$key];
30+
}else{
31+
if (isset($refer[$parentId])) {
32+
$parent =& $refer[$parentId];
33+
$parent[$child][] =& $list[$key];
34+
}
35+
}
36+
}
37+
}
38+
return $tree;
39+
}
40+
741
/**
842
* @param array $arr
943
* @param int $pid
1044
* @return array
1145
*/
12-
public static function getTree($arr,$title='title',$pid=0,$parentField='pid'){
46+
public static function listTotree($arr,$title='title',$pid=0,$parentField='pid',$children= "children"){
1347
$list =array();
1448
foreach ($arr as $k=>$v){
1549
if ($v[$parentField] == $pid){
1650
$v[$title] = lang($v[$title]);
17-
$v['children'] = self::getTree($arr,$title,$v['id'],$parentField);
51+
$v[$children] = self::getTree($arr,$title,$v['id'],$parentField);
1852
$list[] = $v;
1953
}
2054
}
@@ -41,5 +75,4 @@ public static function cateTree($cate ,$name='title', $lefthtml = '|— ' , $pid
4175
}
4276
return $arr;
4377
}
44-
45-
}
78+
}

0 commit comments

Comments
 (0)