无限极分类php

<?php

//无限极分类及子孙树

$area = array(

0=>array('cat_id'=>10,'cat_name'=>'口子乡','parent_id'=>9),

1=>array('cat_id'=>2,'cat_name'=>'朝阳区','parent_id'=>1),

2=>array('cat_id'=>3,'cat_name'=>'海淀区','parent_id'=>1),

3=>array('cat_id'=>4,'cat_name'=>'河北省','parent_id'=>0),

4=>array('cat_id'=>5,'cat_name'=>'邯郸市','parent_id'=>4),

5=>array('cat_id'=>6,'cat_name'=>'馆陶县','parent_id'=>5),

6=>array('cat_id'=>7,'cat_name'=>'安徽省','parent_id'=>0),

7=>array('cat_id'=>8,'cat_name'=>'淮北市','parent_id'=>7),

8=>array('cat_id'=>9,'cat_name'=>'濉溪县','parent_id'=>8),

9=>array('cat_id'=>1,'cat_name'=>'北京市','parent_id'=>0)

);

//static 在函数可以修改一个变量 是此变量变成静态变量 此变量之初始化一次以后所有同名函数的调用直接使用此变量

//$list=array();

function tree($arr,$parent_id=0)

{

//global $list;

static $list=array();

foreach($arr as $k=>$v)

{

if($v['parent_id']==$parent_id){

$list[]=$v;

tree($arr,$v['cat_id']);

}

}

return $list;

}

//print_r(tree($area,0));

//例子给定的馆陶县 找出河北省

function find($arr,$parent_id){

static $list=array();

foreach($arr as $k=>$v){

if($v['cat_id']==$parent_id){

$list[]=$v;

if($v['parent_id']!=0){

find($arr,$v['parent_id']);

}else{

return false;

}

}

}

return $list;

}