php下利用递归实现无限级分类

<?php
//分析
/*
	福建省
		福州市
		龙岩市
	广东省
		广州市
		佛山市
		晋江市
			江门市
	江西省
		南昌市
		赣州市
			宁都县
			大余县
			信封县
		吉安市


cat_id		pri			parent_id
1			福建省			0
2			福州市			1
3			龙岩市			1
4			广东省			0
5			广州市			4
6			佛山市			4
7			晋江市			4	
8			江门市			7
9			江西省			0
10			南昌市			9
11			赣州市			9
12			宁都县			11
13			大余县			11
14			信封县			11
15			吉安市			9
16
*/
?>

<?php
header("content-type:text/html;charset=utf-8");
//php实现无限分类
$area = array(
array(‘cat_id‘=>1,‘province‘=>‘福建省‘,‘parent_id‘=>0),
array(‘cat_id‘=>2,‘province‘=>‘龙岩市‘,‘parent_id‘=>1),
array(‘cat_id‘=>3,‘province‘=>‘广东省‘,‘parent_id‘=>0),
array(‘cat_id‘=>4,‘province‘=>‘佛山市‘,‘parent_id‘=>3),
array(‘cat_id‘=>5,‘province‘=>‘江西省‘,‘parent_id‘=>0),
array(‘cat_id‘=>6,‘province‘=>‘南昌市‘,‘parent_id‘=>5),
array(‘cat_id‘=>7,‘province‘=>‘赣州市‘,‘parent_id‘=>5),
array(‘cat_id‘=>8,‘province‘=>‘宁都县‘,‘parent_id‘=>7),
);
/*
参数说明:
$area:array 一个数组,存放了分类的栏目
$parent_id:int 用作查询的条件
$lev:int 实现子栏目的缩进
*/
function sortarea($area,$parent_id = 0,$lev = 1){
//声明一个变量为static,这个变量是一个数组
static $list;
foreach($area as $v){
//如果父id=0,则取出顶层栏目,之后通过递归传递过来cat_id,判断parent_id是否等于cat_id
if($v[‘parent_id‘] == $parent_id){
//把$lev变量放进$v的数组中去
$v[‘lev‘] = $lev;
$list[] = $v;
sortarea($area,$v[‘cat_id‘],$lev+1);
}
}
return $list;
}
$list = sortarea($area,0,1);
foreach($list as $v){
//用str_repeat函数实现子栏目缩进
echo str_repeat(‘&nbsp&nbsp&nbsp‘,$v[‘lev‘]),$v[‘province‘],‘<br />‘;
}
?>

本文出自 “小城工作室” 博客,请务必保留此出处http://xcroom.blog.51cto.com/7941996/1650586

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。