PHP实现无限类分类
复制代码代码如下所示:区域=数组(
阵列('id' = > 1,'name' = > 'anhui ','parent= > 0),
阵列('id' = > 2,'name' = > 'haidian ','parent= > 7),
阵列('id' = > 3,'name' = > 'suixi,'parent= > 5),
阵列('id' = > 4,'name' = > 'changping ','parent= > 7),
阵列('id' = > 5,'name' = > 'huaibei ','parent= > 1),
阵列('id' = > 6,'name' = > 'chaoyang,'parent= > 7),
阵列('id' = > 7,'name' = >北京,'parent= > 0),
阵列('id' = > 8,'name' = >,'parent= > 2)
);
1。递归,查找子和孙子树
复制代码代码如下所示:
功能树(ARR ID = 0美元,美元,美元利= 1){
$ =数组();子数组
foreach($ ARR达v){
如果($ V { } = = 'parent的$id){
$ V { 'lev} = $利;
潜艇{ } =美元$ V; / /例如找到阵列('id' = > 1,'name' = > 'anhui,'parent= > 0),
潜艇= array_merge美元(美元的替补,子树($ ARR,$ V { 'id' },合利+ 1));
}
}
返回$潜艇;
}
美元树子树(美元区,0,1);
foreach(美元树达v){
回声str_repeat($ V { 'lev}),$ V { 'name' },;
}
2。递归,家谱树
家谱树的应用,如面包屑导航主页、手机类型> CDMA手机>公共福利PHP的递归应用
复制代码代码如下所示:
函数FamilyTree($ ARR,$id){
树=数组();
foreach($ ARR达v){
如果($ V { 'id' } = $id){ / /确定是否找到父列
如果($ V { 'parent} > 0){ / /亲代> 0,柱的父亲
美元树(FamilyTree array_merge美元树(ARR美元,$ V { 'parent ' }));
}
为了找到这个案例,树{
}
}
返回$树;
}
print_r(FamilyTree($,8); / /)北京->海淀->。
2。迭代,家谱树
复制代码代码如下所示:
迭代效率比递归高,代码没有。
查找具有迭代推荐的家族树
功能树($ ARR,$id){
树=数组();
而(美元身份证!= 0){
foreach($ ARR达v){
如果($ V { 'id' } = = $id){
树{ } = $ v;
$id = $ V { 'parent};
打破;
}
}
}
返回$树;
}
print_r(树($,8));