在PHP中实现无限级分类树形结构是一种常见的应用场景,以下是一个简单的实例,展示了如何使用递归函数来构建和显示一个无限级的分类结构。
1. 数据结构设计
我们需要一个数据库表来存储分类信息。以下是一个简单的表结构:

| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 主键 |
| pid | int | 父级分类ID |
| name | varchar | 分类名称 |
| level | tinyint | 分类层级 |
2. 数据库表创建
```sql
CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY,
pid INT DEFAULT 0,
name VARCHAR(255),
level TINYINT
);
```
3. PHP代码实现
以下是一个PHP脚本,用于递归地获取和显示无限级分类:
```php
// 假设数据库连接已经建立,并获取所有分类数据
$categories = [
['id' => 1, 'pid' => 0, 'name' => '根分类', 'level' => 1],
['id' => 2, 'pid' => 1, 'name' => '一级分类1', 'level' => 2],
['id' => 3, 'pid' => 1, 'name' => '一级分类2', 'level' => 2],
['id' => 4, 'pid' => 2, 'name' => '二级分类1', 'level' => 3],
['id' => 5, 'pid' => 2, 'name' => '二级分类2', 'level' => 3],
['id' => 6, 'pid' => 3, 'name' => '二级分类1', 'level' => 3],
// ... 更多分类数据
];
function buildTree($data, $pid = 0) {
$tree = [];
foreach ($data as $item) {
if ($item['pid'] == $pid) {
$children = buildTree($data, $item['id']);
if ($children) {
$item['children'] = $children;
}
$tree[] = $item;
}
}
return $tree;
}
$tree = buildTree($categories);
// 输出树形结构
function printTree($tree, $level = 0) {
static $space = '';
$space .= str_repeat(' ', $level);
foreach ($tree as $item) {
echo $space . $item['name'] . "









