以下是一个简单的PHP递归函数,用于实现无限级分类:
```
function buildTree($rows, $parentId = 0) {
$tree = array();
foreach ($rows as $row) {
if ($row['parent_id'] == $parentId) {
$children = buildTree($rows, $row['id']);
if ($children) {
$row['children'] = $children;
}
$tree[] = $row;
}
}
return $tree;
}
```
在此函数中,$rows是一个包含所有分类信息的数组,$parentId是当前分类的父级ID,默认为0(即顶级分类)。函数首先创建一个空的$tree数组,然后循环遍历所有分类信息,找到所有父级ID等于$parentId的分类,将它们添加到$tree数组中。对于每个分类,如果它有子分类,则递归调用函数本身,将子分类添加到当前分类的“children”属性中。最后,将$tree数组返回。
使用这个函数,我们可以轻松地将一个多层级的分类列表转换为一个多维数组,每个元素包含分类的所有信息以及它的子分类。例如,以下是一个分类列表:
```
id name parent_id
1 电脑 0
2 手机 0
3 台式电脑 1
4 笔记本电脑 1
5 智能手机 2
6 功能手机 2
7 联想台式机 3
8 戴尔笔记本 4
9 华为手机 5
```
使用buildTree函数,可以将这个列表转换为以下多维数组:
```
[
[
'id' => 1,
'name' => '电脑',
'parent_id' => 0,
'children' => [
[
'id' => 3,
'name' => '台式电脑',
'parent_id' => 1,
'children' => [
[
'id' => 7,
'name' => '联想台式机',
'parent_id' => 3
]
]
],
[
'id' => 4,
'name' => '笔记本电脑',
'parent_id' => 1,
'children' => [
[
'id' => 8,
'name' => '戴尔笔记本',
'parent_id' => 4
]
]
]
]
],
[
'id' => 2,
'name' => '手机',
'parent_id' => 0,
'children' => [
[
'id' => 5,
'name' => '智能手机',
'parent_id' => 2,
'children' => [
[
'id' => 9,
'name' => '华为手机',
'parent_id' => 5
]
]
],
[
'id' => 6,
'name' => '功能手机',
'parent_id' => 2
]
]
]
]
```
这个多维数组表示了一个树形结构,顶级节点包含所有子节点的信息。可以根据需要使用这个数组来生成分类菜单、面包屑导航等等。