在使用无限级分类的过程中,经常的格式是这样的,假设表名为category:
- cate_id
- cate_name
- cate_pid
接着如果使用一般的查询格式:
select * from category;
则会返回这样形式的返回值:
array(
0=>array(
'cate_id'=>$cate_id,
'cate_name'=>$cate_name,
'cate_pid'=>$cate_pid
),
1=>array(
'cate_id'=>$cate_id,
'cate_name'=>$cate_name,
'cate_pid'=>$cate_pid
)
);
这样的形式,接着要做的事情就是将上下级关系连接出来。
这里我个人的习惯是这样的:
//假设上面的数组的名字是$categoryInfo_temp
foreach ($categoryInfo_temp as $key=>$value){
$categoryInfo[$value['cate_pid']][]=$value;
}
这其实是使用了数组索引自动合并的原理。将相同的cate_pid的内容整合在一起。
最后得到的结果是:
array(
cate_pid1=array(
0=>array(
'cate_id'=>$cate_id,
'cate_name'=>$cate_name,
'cate_pid'=>$cate_pid
),
1=>array(
'cate_id'=>$cate_id,
'cate_name'=>$cate_name,
'cate_pid'=>$cate_pid
)
),
cate_pid2=array(
0=>array(
'cate_id'=>$cate_id,
'cate_name'=>$cate_name,
'cate_pid'=>$cate_pid
),
1=>array(
'cate_id'=>$cate_id,
'cate_name'=>$cate_name,
'cate_pid'=>$cate_pid
)
)
)
而且这样写的好处是所有的等级类信息均保存在$categoryInfo[0]中,即所有cate_pid为0的值。