本文实例讲述了PHP递归遍历多维数组实现无限分类的方法。分享给大家供大家参考,具体如下:
- <?php
 - //$data[]=array('id'=>1,'parentid'=>0,'name'=>'中国','img'=>'52091199');
 - $data[]=array('id'=>1,'parentid'=>0,'name'=>'中国');
 - $data[]=array('id'=>2,'parentid'=>0,'name'=>'美国');
 - $data[]=array('id'=>3,'parentid'=>0,'name'=>'韩国');
 - $data[]=array('id'=>4,'parentid'=>1,'name'=>'北京');
 - $data[]=array('id'=>5,'parentid'=>1,'name'=>'上海');
 - $data[]=array('id'=>6,'parentid'=>1,'name'=>'广西');
 - $data[]=array('id'=>7,'parentid'=>6,'name'=>'桂林');
 - $data[]=array('id'=>8,'parentid'=>6,'name'=>'南宁');
 - $data[]=array('id'=>9,'parentid'=>6,'name'=>'柳州');
 - $data[]=array('id'=>10,'parentid'=>2,'name'=>'纽约');
 - $data[]=array('id'=>11,'parentid'=>2,'name'=>'华盛顿');
 - $data[]=array('id'=>12,'parentid'=>3,'name'=>'首尔');
 - $tree=build_tree($data,0);
 - //echo memory_get_usage();
 - print_r($tree);
 - function findChild(&$arr,$id){
 - $childs=array();
 - foreach ($arr as $k => $v){
 - if($v['parentid']== $id){
 - $childs[]=$v;
 - }
 - }
 - return $childs;
 - }
 - function build_tree($rows,$root_id){
 - $childs=findChild($rows,$root_id);
 - if(emptyempty($childs)){
 - return null;
 - }
 - foreach ($childs as $k => $v){
 - $rescurTree=build_tree($rows,$v['id']);
 - //Vevb.com
 - if( null != $rescurTree){
 - $childs[$k]['childs']=$rescurTree;
 - }
 - }
 - return $childs;
 - }
 - ?>
 
运行结果:
- Array
 - (
 - [0] => Array
 - (
 - [id] => 1
 - [parentid] => 0
 - [name] => 中国
 - [childs] => Array
 - (
 - [0] => Array
 - (
 - [id] => 4
 - [parentid] => 1
 - [name] => 北京
 - )
 - [1] => Array
 - (
 - [id] => 5
 - [parentid] => 1
 - [name] => 上海
 - )
 - [2] => Array
 - (
 - [id] => 6
 - [parentid] => 1
 - [name] => 广西
 - [childs] => Array
 - (
 - [0] => Array
 - (
 - [id] => 7
 - [parentid] => 6
 - [name] => 桂林
 - )
 - [1] => Array
 - (
 - [id] => 8
 - [parentid] => 6
 - [name] => 南宁
 - )
 - [2] => Array
 - (
 - [id] => 9
 - [parentid] => 6
 - [name] => 柳州
 - )
 - )
 - )
 - )
 - )
 - [1] => Array
 - (
 - [id] => 2
 - [parentid] => 0
 - [name] => 美国
 - [childs] => Array
 - (
 - [0] => Array
 - (
 - [id] => 10
 - [parentid] => 2
 - [name] => 纽约
 - )
 - [1] => Array
 - (
 - [id] => 11
 - [parentid] => 2
 - [name] => 华盛顿
 - )
 - )
 - )
 - [2] => Array
 - (
 - [id] => 3
 - [parentid] => 0
 - [name] => 韩国
 - [childs] => Array
 - (
 - [0] => Array
 - (
 - [id] => 12
 - [parentid] => 3
 - [name] => 首尔
 - )
 - )
 - )
 - )
 
新闻热点
疑难解答