一、数据格式
$arr = Array
(
[0] => Array
(
[cat_id] => 1
[cat_name] => 关于我们
[sort_order] => 0
[parent_id] => 0
)
[1] => Array
(
[cat_id] => 2
[cat_name] => 站内公告
[sort_order] => 0
[parent_id] => 0
)
[2] => Array
(
[cat_id] => 3
[cat_name] => 促销咨询
[sort_order] => 0
[parent_id] => 0
)
[3] => Array
(
[cat_id] => 4
[cat_name] => 售前答疑
[sort_order] => 0
[parent_id] => 2
)
[4] => Array
(
[cat_id] => 5
[cat_name] => 售后答疑
[sort_order] => 0
[parent_id] => 2
)
[5] => Array
(
[cat_id] => 6
[cat_name] => 企业文化
[sort_order] => 0
[parent_id] => 0
)
[6] => Array
(
[cat_id] => 11
[cat_name] => 企业发展历程
[sort_order] => 0
[parent_id] => 1
)
[7] => Array
(
[cat_id] => 12
[cat_name] => 首页公告
[sort_order] => 0
[parent_id] => 2
)
)
二、无限级分类实现
class ArticleCat{
//筛选分类数据
public function getCatTree($arr,$id = 0,$lev = 0) {
$tree = array();
foreach ($arr as $v){
if ($v['parent_id'] == $id){
$v['lev'] = $lev;
$tree[] = $v;
$tree = array_merge($tree,$this->getCatTree($arr,$v['cat_id'],$lev+1));
}
}
return $tree;
}
}
三、调用方式
$catModel = new ArticleCat();
$catList = $catModel->getCatTree($arr);
四、返回数据格式
$catList = Array
(
[0] => Array
(
[cat_id] => 1
[cat_name] => 关于我们
[sort_order] => 0
[parent_id] => 0
[lev] => 0
)
[1] => Array
(
[cat_id] => 11
[cat_name] => 企业发展历程
[sort_order] => 0
[parent_id] => 1
[lev] => 1
)
[2] => Array
(
[cat_id] => 2
[cat_name] => 站内公告
[sort_order] => 0
[parent_id] => 0
[lev] => 0
)
[3] => Array
(
[cat_id] => 4
[cat_name] => 售前答疑
[sort_order] => 0
[parent_id] => 2
[lev] => 1
)
[4] => Array
(
[cat_id] => 5
[cat_name] => 售后答疑
[sort_order] => 0
[parent_id] => 2
[lev] => 1
)
[5] => Array
(
[cat_id] => 12
[cat_name] => 首页公告
[sort_order] => 0
[parent_id] => 2
[lev] => 1
)
[6] => Array
(
[cat_id] => 3
[cat_name] => 促销咨询
[sort_order] => 0
[parent_id] => 0
[lev] => 0
)
[7] => Array
(
[cat_id] => 6
[cat_name] => 企业文化
[sort_order] => 0
[parent_id] => 0
[lev] => 0
)
)
五、在前端直接遍历的效果(此处以ThinkPHP模板为例)
<label>文章分类</label>
<select name='cat_id'style="width:345px; height:32px; line-height:32px; border-top:solid 1px #c3ab7d; border-left:solid 1px #c3ab7d; border-right:solid 1px #e7d5ba; border-bottom:solid 1px #e7d5ba; background: rgba(0, 0, 0, 0) repeat-x scroll 0 0;">
<volist name="catList" id="vo">
<option value="<{$vo.cat_id}>"><?php echo str_repeat(' ',$vo['lev']);?><{$vo.cat_name}></option>
</volist>
</select>