<?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('   ',$v['lev']),$v['province'],'<br />';
}
?>