PHP实现无限级分类(递归方法)

 1 $array = [
 2     array('id' => 1, 'parent_id' => 0, 'cate_name' => '一级'),
 3     array('id' => 2, 'parent_id' => 0, 'cate_name' => '一级'),
 4     array('id' => 3, 'parent_id' => 1, 'cate_name' => '二级'),
 5     array('id' => 4, 'parent_id' => 1, 'cate_name' => '二级'),
 6     array('id' => 5, 'parent_id' => 2, 'cate_name' => '二级'),
 7     array('id' => 6, 'parent_id' => 2, 'cate_name' => '二级'),
 8     array('id' => 7, 'parent_id' => 3, 'cate_name' => '三级'),
 9     array('id' => 8, 'parent_id' => 3, 'cate_name' => '三级'),
10     array('id' => 9, 'parent_id' => 4, 'cate_name' => '三级'),
11     array('id' => 10, 'parent_id' => 4, 'cate_name' => '三级'),
12     array('id' => 11, 'parent_id' => 5, 'cate_name' => '三级'),
13     array('id' => 12, 'parent_id' => 5, 'cate_name' => '三级'),
14     array('id' => 13, 'parent_id' => 6, 'cate_name' => '三级'),
15     array('id' => 14, 'parent_id' => 6, 'cate_name' => '三级'),
16 ];

下面是方法,采用递归的方式实现:

 1 function cate($array, $parent_id)
 2 {
 3     $list = array();
 4     foreach ($array as $value) {
 5         if ($value['parent_id'] == $parent_id) {
 6             $value['son'] = self::cate($array, $value['id']);
 7             $list[] = $value;
 8         }
 9     }
10     return $list;
11 }

然后,我们就可以直接调用这个方法,通过改变第二个参数获取父类的所有子类

1 $this->cate($array, 0)

结果如下(json形式)

 1 [
 2     {
 3         "id": 1,
 4         "parent_id": 0,
 5         "cate_name": "一级",
 6         "son": [
 7             {
 8                 "id": 3,
 9                 "parent_id": 1,
10                 "cate_name": "二级",
11                 "son": [
12                     {
13                         "id": 7,
14                         "parent_id": 3,
15                         "cate_name": "三级",
16                         "son": []
17                     },
18                     {
19                         "id": 8,
20                         "parent_id": 3,
21                         "cate_name": "三级",
22                         "son": []
23                     }
24                 ]
25             },
26             {
27                 "id": 4,
28                 "parent_id": 1,
29                 "cate_name": "二级",
30                 "son": [
31                     {
32                         "id": 9,
33                         "parent_id": 4,
34                         "cate_name": "三级",
35                         "son": []
36                     },
37                     {
38                         "id": 10,
39                         "parent_id": 4,
40                         "cate_name": "三级",
41                         "son": []
42                     }
43                 ]
44             }
45         ]
46     },
47     {
48         "id": 2,
49         "parent_id": 0,
50         "cate_name": "一级",
51         "son": [
52             {
53                 "id": 5,
54                 "parent_id": 2,
55                 "cate_name": "二级",
56                 "son": [
57                     {
58                         "id": 11,
59                         "parent_id": 5,
60                         "cate_name": "三级",
61                         "son": []
62                     },
63                     {
64                         "id": 12,
65                         "parent_id": 5,
66                         "cate_name": "三级",
67                         "son": []
68                     }
69                 ]
70             },
71             {
72                 "id": 6,
73                 "parent_id": 2,
74                 "cate_name": "二级",
75                 "son": [
76                     {
77                         "id": 13,
78                         "parent_id": 6,
79                         "cate_name": "三级",
80                         "son": []
81                     },
82                     {
83                         "id": 14,
84                         "parent_id": 6,
85                         "cate_name": "三级",
86                         "son": []
87                     }
88                 ]
89             }
90         ]
91     }
92 ]
分类结果
posted @ 2017-12-05 15:18  jiazuanjie  阅读(289)  评论(0编辑  收藏  举报