//数据库我用的mysql PDO 但是整个思路又是一样的$conn=mysql_connect('localhost','root','123');if(mysql_errno()){ printf('连接失败'.mysql_error());}mysql_select_db('edeng');mysql_set_charset('utf8');/* *递归函数 *@param id 要查询fid=$id的所有子类 这里将$id的默认值为设为0 是因为我在数据库中将最顶层的类别的fid设置为0 */function get_array($id=0){ $sql="select id,fid,cname from e_cat where fid= $id"; $result=mysql_query($sql); $arr=array(); if($result && mysql_affected_rows()){ while($rows=mysql_fetch_assoc($result)){ $rows['child']=get_array($rows['id']); $arr[] = $rows; } return $arr; } } echo ''; $result = get_array(); print_r($result); 函数首先查询出所有fid为0的类 通过while逐个循环进行回调查找fid为当前类的id的子类 复制代码