1+ <?php
2+
3+ /**
4+ * Created by PhpStorm.
5+ * Author: Niklas Lu
6+ * Email: 332553882@qq.com
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