你还是用浪费时间和记忆的分类递归遍历无限制,读这篇文章,我觉得你应该改一下。

这是PHP无限分类树很精简的方法,我看到乔在oschina,参考,整理分享。

复制代码代码如下所示:

功能generatetree($项){

树=数组();

foreach($项目达项目){

如果(isset($项目{ $项{ 'pid} })){

$项目{ $项{ } } { 'pid儿子} { } = $项目{ $项{ 'id' } };

其他{ }

美元树{ } = $项目{ $项{ 'id' } };

}

}

返回$树;

}

$ =数组(

1 =阵列('id' = > 1,'pid ' = 0,'name' = >安徽),

2 =阵列('id' = > 2,'pid ' = 0,'name' = >浙江),

3 =阵列('id' = > 3,'pid= > 1,'name' = >合肥),

4 =阵列('id' = > 4,'pid ' = 3,'name' = >长丰县),

5 =阵列('id' = > 5,'pid= > 1,'name' = >安庆),

);

print_r(generatetree($项));



您可以看到以下打印的结果:

复制代码代码如下所示:

阵列

(

{ 0 }数组

(

{ 1

{ 0

{安徽省中的名称}

{子数组

(

{ 0 }数组

(

{ 3

{ 1

{合肥

{子数组

(

{ 0 }数组

(

{ 4

{ 3

{长丰县

)



)



)



{ 1 }数组

(

{ 5

{ 1

{安庆

)



)



)



{ 1 }数组

(

{ 2

{ 0

{浙江省中的名称}

)



)



上面的生成树方法也可以减少到5行。

复制代码代码如下所示:

功能generatetree($项){

foreach($项目达项目)

$项目{ $项{ } } { 'pid儿子} { $项{ 'id' } } = $项目{ $项{ 'id' } };

返回isset($项目{ 0 } { }儿子')$项目{ 0 } { }:儿子的阵列();

}



在这个无限的分类树结构数据之上是值得学习的,但我不认为这个代码的实际使用是显而易见的。您需要取出格式化的树数据或获得递归。

复制代码代码如下所示:



*如何获取数据格式化树数据

* /

树generatetree美元($项目);

功能gettreedata(美元树){

foreach(美元树达T){

echo $ T { 'name' }。;

如果(isset($ T {孩子' })){

gettreedata($ T {孩子});

}

}

}

gettreedata(美元树);