PHP两种无限分类方法的一个实例
复制代码代码如下所示:
$ =数组(
阵列('id' = > 1,'pid= > 0,'name' = >会),
阵列('id' = > 2,'pid= > 0,'name' = >第二),
阵列('id' = > 3,'pid= > 1,'name' = >21),
阵列('id' = > 4,'pid= > 3,'name' = >31),
阵列('id' = > 5,'pid= > 1,'name' = >22),
阵列('id' = > 6,'pid= > 3,'name' = >32),
阵列('id' = > 7,'pid= > 6,'name' = >四41),
);
$ I = 0;
功能formattree($ ARR,PID = 0美元){
树=数组();
数组();
全球美元;
如果($ ARR){
foreach(ARR美元美元美元K = > v){
如果($ V { 'pid} = $ PID){ / /
温度= formattree美元($ ARR,$ V { 'id' });
美元美元的儿子'} {温度V = $温度;
树{ } = $ v;
}
}
}
返回$树;
}
print_r(formattree($项));
二、非递归方法
复制代码代码如下所示:
功能gentree($项){
$树(=);
foreach($项目达项目)
如果(isset($项目{ $项{ 'pid} })){
$项目{ $项{ } } { 'pid儿子} { } = $项目{ $项{ 'id' } };
}
别的{
美元树{ } = $项目{ $项{ 'id' } };
}
返回$树;
}
$ =数组(
1 =阵列('id' = > 1,'pid ' = 0,'name' = > 11级),
2 =阵列('id' = > 2,'pid= > 1,'name'的= > 21),
3 =阵列('id' = > 3,'pid= > 1,'name'的= > 23),
4 =阵列('id' = > 4,'pid= > 9,'name'的= >三31),
5 =阵列('id' = > 5,'pid= > 4,'name'的= >四43),
6 =阵列('id' = > 6,'pid= > 9,'name'的= >三32),
7 =阵列('id' = > 7,'pid= > 4,'name'的= >四41),
8 =阵列('id' = > 8,'pid= > 4,'name'的= >四42),
9 =阵列('id' = > 9,'pid= > 1,'name'的= > 25),
10 =阵列('id' = > 10,'pid= > 11,'name'的= > 22),
11 =阵列('id' = > 11,'pid ' = 0,'name' = > 12级),
12 =阵列('id' = > 12,'pid= > 11,'name'的= > 24),
13 =阵列('id' = > 13,'pid= > 4,'name'的= >四44),
14 =阵列('id' = > 14,'pid= > 1,'name'的= > 26),
15 =阵列('id' = > 15,'pid= > 8,'name'的= >五51),
16 =阵列('id' = > 16,'pid= > 8,'name'的= >五52),
17 =阵列('id' = > 17,'pid= > 8,'name'的= >五53),
18 =阵列('id' = > 18,'pid= > 16,'name'的= >六64),
);
print_r(gentree($项));