PHP实现无限极分类的两种方式示例【递归和引用

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);

}

}

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签