无限级分类的递归查询,先上代码:
<?php
$array[] = array("id"=>1,"pid"=>0,"name"=>"aaa");
$array[] = array("id"=>2,"pid"=>0,"name"=>"bbb");
$array[] = array("id"=>3,"pid"=>1,"name"=>"ccc");
$array[] = array("id"=>4,"pid"=>1,"name"=>"ddd");
$array[] = array("id"=>5,"pid"=>3,"name"=>"eee");
$array[] = array("id"=>6,"pid"=>2,"name"=>"fff");
function find_child($array,$pid=0,$level=0)
{
static $result=array();
$space=str_repeat(' ',$level);
foreach($array as $k=>$row)
{
if($row['pid']==$pid)
{
$row['name']=$space.$row['name'];
$row['level']=$level;
$result[]=$row;
find_child($array,$row['id'],$level+1);
}
}
return $result; // 返回的result[] 数组是重新排序后的结果(即由父节点开始一直排到各子节点)
}
$n=find_child($array);
echo "<select>";
foreach($n as $v)
{
echo "<option>";
echo $v['name'];
echo "</option>";
}
echo "</select>";
?>
函数find_child() 主要思路即是不断地以父类id作为参数传值,递归向下搜寻子类