在PHP编程中,父子递归是一种常见的编程技巧,它可以帮助我们实现树形结构数据的遍历和操作。以下是一个使用PHP实现父子递归的实例,我们将以一个简单的分类菜单为例来展示如何使用递归函数来展示分类的层级关系。
实例描述
假设我们有一个分类表,其中包含分类的ID、父级分类ID、分类名称等信息。我们需要根据这些信息构建一个分类菜单,并且能够展示出分类的层级关系。
数据库示例
以下是一个分类表的示例数据:
| 分类ID | 父级分类ID | 分类名称 |
|---|---|---|
| 1 | 0 | 根分类 |
| 2 | 1 | 子分类1 |
| 3 | 1 | 子分类2 |
| 4 | 2 | 孙分类1 |
| 5 | 2 | 孙分类2 |
PHP代码实现
以下是一个PHP脚本,它使用递归函数来构建和展示分类菜单。
```php
// 假设这是一个从数据库获取的分类数据
$categories = [
['id' => 1, 'parent_id' => 0, 'name' => '根分类'],
['id' => 2, 'parent_id' => 1, 'name' => '子分类1'],
['id' => 3, 'parent_id' => 1, 'name' => '子分类2'],
['id' => 4, 'parent_id' => 2, 'name' => '孙分类1'],
['id' => 5, 'parent_id' => 2, 'name' => '孙分类2'],
];
function buildCategoryMenu($categories, $parentId = 0) {
$menuItems = [];
foreach ($categories as $category) {
if ($category['parent_id'] == $parentId) {
$menuItems[] = $category;
$menuItems = array_merge($menuItems, buildCategoryMenu($categories, $category['id']));
}
}
return $menuItems;
}
// 获取根分类
$rootCategories = buildCategoryMenu($categories);
// 打印分类菜单
function printCategoryMenu($categories) {
echo '
- ';
- ' . $category['name'];
if (!empty($category['children'])) {
printCategoryMenu($category['children']);
}
echo '
';
foreach ($categories as $category) {
echo '
}
echo '
}
// 调用函数,打印菜单
printCategoryMenu($rootCategories);
>
```
输出结果
执行上述PHP脚本后,输出结果将如下所示:
```
- 根分类
- 子分类1
- 孙分类1
- 孙分类2
- 子分类2
- 孙分类1
- 孙分类2
- 子分类1
```
这个实例展示了如何使用PHP的父子递归函数来构建和展示一个分类菜单,其中包含了分类的层级关系。

