PHP中的无限级分类

<?php

/*燕十八 公益PHP培训  
课堂地址:YY频道88354001  
学习社区:www.zixue.it */
		$area = array(
			array('id'=>1,'name'=>'安徽','parent'=>0),
			array('id'=>2,'name'=>'海淀','parent'=>7),
			array('id'=>3,'name'=>'濉溪县','parent'=>5),
			array('id'=>4,'name'=>'昌平','parent'=>7),
			array('id'=>5,'name'=>'淮北','parent'=>1),
			array('id'=>6,'name'=>'朝阳','parent'=>7),
			array('id'=>7,'name'=>'北京','parent'=>0),
			array('id'=>8,'name'=>'上地','parent'=>2)
			);

		function tree($arr,$id,$level=1){
			static $subtree=array();//定义一个静态变量,用于存放取回来的值	
			foreach($arr as $val){//循环数组
				if($val['parent']==$id){//判断父的id与传入的id相匹配
					$val['level']=$level;//定义一个等级
					$subtree[]=$val;//将取到的值追加到数组里
					tree($arr,$val['id'],$lev=$level+1);//递归调用tree函数
					
				}
			}
			return $subtree;//返回结果
		}		
		$res=tree($area,0);
		foreach($res as $key=>$val){
			echo '|'.str_repeat("---",($val['level']*3)).$val['name'].'<br/>';//连续打印结果
		}

	/*结果如下:

	|---------安徽
	|------------------淮北
	|---------------------------濉溪县
	|---------北京
	|------------------海淀
	|---------------------------上地
	|------------------昌平
	|------------------朝阳
	*/
		

 

posted @ 2012-11-24 01:17  arvim  阅读(335)  评论(0编辑  收藏  举报