php教程

超轻量级php框架startmvc

PHP递归遍历多维数组实现无限分类的方法

更新时间:2020-03-09 04:02:44 作者:startmvc
本文实例讲述了PHP递归遍历多维数组实现无限分类的方法。分享给大家供大家参考,具体如

本文实例讲述了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(empty($childs)){
 return null;
 }
 foreach ($childs as $k => $v){
 $rescurTree=build_tree($rows,$v['id']);
 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] => 首尔
 )
 )
 )
)

PHP 递归遍历 多维数组 无限分类