1 $arr = array( 2 0=>array( 3 'cid'=>1, 4 'pid'=>0, 5 'name'=>'亚洲', 6 ), 7 1=>array( 8 'cid'=>2, 9 'pid'=>0, 10 'name'=>'北美洲', 11 ), 12 2=>array( 13 'cid'=>3, 14 'pid'=>1, 15 'name'=>'中国', 16 ), 17 3=>array( 18 'cid'=>4, 19 'pid'=>2, 20 'name'=>'美国', 21 ), 22 4=>array( 23 'cid'=>5, 24 'pid'=>3, 25 'name'=>'北京', 26 ), 27 5=>array( 28 'cid'=>6, 29 'pid'=>3, 30 'name'=>'河北', 31 ), 32 6=>array( 33 'cid'=>7, 34 'pid'=>5, 35 'name'=>'东城区', 36 ), 37 7=>array( 38 'cid'=>8, 39 'pid'=>5, 40 'name'=>'海淀区', 41 ), 42 );
1 private function GetTree($arr,$pid,$step){ 2 global $tree; 3 foreach($arr as $key=>$val) { 4 if($val['pid'] == $pid) { 5 $flg = str_repeat('└―',$step); 6 $val['name'] = $flg.$val['name']; 7 $tree[] = $val; 8 $this->GetTree($arr , $val['cid'] ,$step+1); 9 } 10 } 11 return $tree; 12 }
然后我们只需要写一个调用的代码就好
$newarr = $this->GetTree($arr, 0, 0);
这样看上去是不是很简单?