通过引用方式实现无限极分类
思路:
1.即所有待处理的数据进行包装成下标为主键id(pk)的数组,便于有pid获取对应的父栏目。
2.对包装的数据进行循环,如果为根节点,则将其引用添加到tree中,否则,将其引用添加到其父类的子元素中。这样虽然tree中,只是添加了根节点,但是每个根节点如果有子元素,其中包含了子元素的引用。故能形成树型。
代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/**
* 把返回的数据集转换成Tree
* @param array $list 要转换的数据集
* @param string $pk 自增字段(栏目id)
* @param string $pid parent标记字段
* @return array
* @author dqs <1696232133@qq.com>
*/
function
make_tree(
$list
,
$pk
=
'id'
,
$pid
=
'pid'
,
$child
=
'_child'
,
$root
=0){
$tree
=
array
();
$packData
=
array
();
foreach
(
$list
as
$data
) {
$packData
[
$data
[
$pk
]] =
$data
;
}
foreach
(
$packData
as
$key
=>
$val
){
if
(
$val
[
$pid
]==
$root
){
//代表跟节点
$tree
[]=&
$packData
[
$key
];
}
else
{
//找到其父类
$packData
[
$val
[
$pid
]][
$child
][]=&
$packData
[
$key
];
}
}
return
$tree
;
|