递归实现无限级分类:
<?php
$arr = array(
0=>array(
'cid'=>1,
'pid'=>0,
'name'=>'亚洲',
),
1=>array(
'cid'=>2,
'pid'=>0,
'name'=>'北美洲',
),
2=>array(
'cid'=>3,
'pid'=>1,
'name'=>'中国',
),
3=>array(
'cid'=>4,
'pid'=>2,
'name'=>'美国',
),
4=>array(
'cid'=>5,
'pid'=>3,
'name'=>'北京',
),
5=>array(
'cid'=>6,
'pid'=>3,
'name'=>'河北',
),
6=>array(
'cid'=>7,
'pid'=>5,
'name'=>'东城区',
),
7=>array(
'cid'=>8,
'pid'=>5,
'name'=>'海淀区',
),
);
function tree($arr,$pid=0,$level=0){
static $list = array();
foreach ($arr as $v) {
//如果是顶级分类,则将其存到$list中,并以此节点为根节点,遍历其子节点
if ($v['pid'] == $pid) {
$v['level'] = $level;
$list[] = $v;
tree($arr,$v['cid'],$level+1);
}
}
return $list;
}
print_r(tree($arr));