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));