1
+ <?php
2
+
3
+ /**
4
+ * Created by PhpStorm.
5
+ * Author: Niklas Lu
6
+
7
+ * Date: 2016/6/23
8
+ * Time: 10:30
9
+ */
10
+ namespace niklaslu ;
11
+ class UnLimitTree
12
+ {
13
+ //组合一维数组
14
+ Static Public function unlimitedForLevel ($ cate , $ html = '-- ' , $ pid = 0 , $ level = 0 ) {
15
+ $ arr = array ();
16
+ foreach ($ cate as $ k => $ v ) {
17
+ if ($ v ['pid ' ] == $ pid ) {
18
+ $ v ['level ' ] = $ level + 1 ;
19
+ $ v ['html ' ] = str_repeat ($ html , $ level );
20
+ $ arr [] = $ v ;
21
+ $ arr = array_merge ($ arr , self ::unlimitedForLevel ($ cate , $ html , $ v ['id ' ], $ level + 1 ));
22
+ }
23
+ }
24
+ return $ arr ;
25
+ }
26
+ //组合多维数组
27
+ Static Public function unlimitedForLayer ($ cate , $ name = 'child ' , $ pid = 0 ) {
28
+ $ arr = array ();
29
+ foreach ($ cate as $ v ) {
30
+ if ($ v ['pid ' ] == $ pid ) {
31
+ $ v [$ name ] = self ::unlimitedForLayer ($ cate , $ name , $ v ['id ' ]);
32
+ $ arr [] = $ v ;
33
+ }
34
+ }
35
+ return $ arr ;
36
+ }
37
+ //传递一个子分类ID返回所有的父级分类
38
+ Static Public function getParents ($ cate , $ id ) {
39
+ $ arr = array ();
40
+ foreach ($ cate as $ v ) {
41
+ if ($ v ['id ' ] == $ id ) {
42
+ $ arr [] = $ v ;
43
+ $ arr = array_merge (self ::getParents ($ cate , $ v ['pid ' ]), $ arr );
44
+ }
45
+ }
46
+ return $ arr ;
47
+ }
48
+ //传递一个父级分类ID返回所有子分类ID
49
+ Static Public function getChildsId ($ cate , $ pid ) {
50
+ $ arr = array ();
51
+ foreach ($ cate as $ v ) {
52
+ if ($ v ['pid ' ] == $ pid ) {
53
+ $ arr [] = $ v ['id ' ];
54
+ $ arr = array_merge ($ arr , self ::getChildsId ($ cate , $ v ['id ' ]));
55
+ }
56
+ }
57
+ return $ arr ;
58
+ }
59
+ //传递一个父级分类ID返回所有子分类
60
+ Static Public function getChilds ($ cate , $ pid ) {
61
+ $ arr = array ();
62
+ foreach ($ cate as $ v ) {
63
+ if ($ v ['pid ' ] == $ pid ) {
64
+ $ arr [] = $ v ;
65
+ $ arr = array_merge ($ arr , self ::getChilds ($ cate , $ v ['id ' ]));
66
+ }
67
+ }
68
+ return $ arr ;
69
+ }
70
+ }
0 commit comments