Heim >Backend-Entwicklung >PHP-Tutorial >利用函数递归实现无限分类

利用函数递归实现无限分类

WBOY
WBOYOriginal
2016-07-29 08:59:411034Durchsuche
<span style="font-size:18px;">/*
*利用函数递归的思想创建一个函数实现无限分类的功能
*其实就是以每条数据的f_id父id作为根节点,进行数据的串联,再以根节*点向下查找
*
*
*举例:id   f_id   title
*       1     0     陕西
*       2     0     山西
*       3     1     西安
*       4     1     渭南
*       5     2     山西
*我们以省市划分举例,id代表每条记录的序号,f_id代表父id,取值取得*是它的上一级区域的id。 仔细观察即可发现规律
*        个人理解,希望可以帮助有需求的人
*/

//创建一个函数两个参数 $arr 将分类的数组  $p_id 初始父id</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">
function get_fenlei($arr,$p_id=0){
	//采用foreach()循环打印$arr数组
	foreach ($arr as $value) {
   //首先我们寻找f_id==0的记录,因为它们是最高的,所以分别以它们
   //为根节点向下寻找子节点,即就是利用函数递归,寻找
   //属于直辖下的城市	
		if($value['p_id']==$p_id){//f_is==0执行

          if($value['p_id']==0){//为了显示效果,不是核心代码
                  echo "".$value['title'];//显示title
          }else{
          	echo "--------".$value['title'];
          }	
          //函数递归,此时以根节点的id作为父id寻找它下面的城市
          //核心代码,如此递归 显示无限分类	
            get_fenlei($arr,$value['id']);
		}
		

		}
	}
//我们就不用操作数据库了,用一个数组代替就可以了
$arr=array(array('id'=>'1','p_id'=>'0','title'=>'陕西'),
	array('id'=>'2','p_id'=>'0','title'=>'山西'),
    array('id'=>'3','p_id'=>'1','title'=>'西安'),
    array('id'=>'4','p_id'=>'1','title'=>'渭南'),
    array('id'=>'5','p_id'=>'2','title'=>'大同')
	);
//执行函数
get_fenlei($arr);</span>

<span style="font-size:18px;">效果图:</span>
利用函数递归实现无限分类

以上就介绍了利用函数递归实现无限分类,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn