本文主要介绍PHP中两种无限分类方法的例子。,递归方法 复制代码代码如下: $items=array( array('id'=>1,'pid'=>0,'name'=>'11级'), array('id'=>2,'pid'=>0,'name'=>'12级'), array('id'=>3,'pid'=>1,'name'=>'中学21'), array('id'=>4,'pid'=>3,'name'=>'三级31'), array('id'=>5,'pid'=>1,'name'=>'中22'), array('id'=>6,'pid'=>3,'name'=>'三32级'), array('id'=>7,'pid'=>6,'name'=>'41级'), ); $i=0; functionformatTree($arr,$pid=0){ $tree=array(); $temp=array(); global$i; if($arr){ foreach($arras$k=>$v){ if($v['pid']==$pid){// $temp=formatTree($arr,$v['id']); $temp&&$v['son']=$temp; $tree[]=$v; } } } return$tree; } print_r(formatTree($items)); 二、非递归方法 复制代码代码如下: functiongenTree($items){ $tree=array();//格式化树 foreach($itemsas$item) if(isset($items[$item['pid']])){ $items[$item['pid']]['son'][]=&$items[$item['id']]; } else{ $tree[]=&$items[$item['id']]; } return$tree; } $items=array( 1=>array('id'=>1,'pid'=>0,'name'=>'11级'), 2=>array('id'=>2,'pid'=>1,'name'=>'21级'), 3=>array('id'=>3,'pid'=>1,'name'=>'中学23'), 4=>array('id'=>4,'pid'=>9,'name'=>'三级31'), 5=>array('id'=>5,'pid'=>4,'name'=>'四级43'), 6=>array('id'=>6,'pid'=>9,'name'=>'三级32'), 7=>array('id'=>7,'pid'=>4,'name'=>'41'), 8=>array('id'=>8,'pid'=>4,'name'=>'42级'), 9=>array('id'=>9,'pid'=>1,'name'=>'25级'), 10=>array('id'=>10,'pid'=>11,'name'=>'中22'), 11=>array('id'=>11,'pid'=>0,'name'=>'12级'), 12=>array('id'=>12,'pid'=>11,'name'=>'中24'), 13=>array('id'=>13,'pid'=>4,'name'=>'44级'), 14=>array('id'=>14,'pid'=>1,'name'=>'26级'), 15=>array('id'=>15,'pid域名交易'=>8,'name'=>'51'), 16=>array('id'=>16,'pid'=>8,'name'=>'52级'), 17=>array('id'=>17,'pid'=>8,'name'=>'53级'), 18=>array('id'=>18,'pid'=>16,'name'=>'64'), ); print_r(genTree($items));
