1. 引言
无限极分类在电商、新闻、博客等网站中十分常见。无限极分类是指可以无限嵌套的分类结构,每个分类可以有多个子分类,同时也可以有多个父分类。PHP作为一种常用的服务器端脚本语言,提供了多种方法来实现无限极分类,本文将介绍其中的两种常用方式:递归和引用。
2. 递归实现无限极分类
递归是一种在函数中调用自身的技术。在无限极分类中,递归可以通过遍历分类列表的每一个分类,在每个分类中再次调用自身,继续遍历该分类的子分类,以此实现无限嵌套的分类结构。
2.1 准备工作
在开始递归实现之前,我们需要准备一个分类列表数据。下面是一个示例分类列表:
$categories = [
['id' => 1, 'name' => '电子产品', 'parent_id' => null],
['id' => 2, 'name' => '手机', 'parent_id' => 1],
['id' => 3, 'name' => '电视', 'parent_id' => 1],
['id' => 4, 'name' => '家用电器', 'parent_id' => 1],
['id' => 5, 'name' => '服装', 'parent_id' => null],
['id' => 6, 'name' => '男装', 'parent_id' => 5],
['id' => 7, 'name' => '女装', 'parent_id' => 5],
// 更多分类...
];
这里的分类数据使用数组表示,每个分类都有一个唯一的id、名称name和可能的父分类parent_id。根分类的parent_id为null。
2.2 递归函数
接下来,我们可以定义一个递归函数来遍历分类列表,实现无限极分类的显示。首先,我们可以定义一个辅助函数用于根据分类的id查找其子分类:
function getChildrenCategories($categories, $parentId) {
$children = [];
foreach ($categories as $category) {
if ($category['parent_id'] == $parentId) {
$children[] = $category;
}
}
return $children;
}
该函数接受分类列表和父分类的id作为参数,返回该父分类下的所有子分类。
接着,我们定义递归函数来遍历分类列表并输出分类的层级关系:
function printCategories($categories, $parentId = null, $indent = 0) {
$children = getChildrenCategories($categories, $parentId);
foreach ($children as $child) {
echo str_repeat(' ', $indent) . $child['name'] . '';
printCategories($categories, $child['id'], $indent + 1);
}
}