44
55class 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