PHPWind 是一个基于 PHP 和 MySQL 的开源社区论坛系统。无限分类(也称为递归分类)是一种数据结构,用于表示具有层级关系的数据,例如论坛的版块分类。每个分类可以包含子分类,子分类又可以包含更多子分类,以此类推。
无限分类主要有两种实现方式:
无限分类广泛应用于论坛、博客、电商等需要层级结构的系统。例如,论坛的版块分类、商品的分类等。
以下是一个使用 PHP 和 MySQL 实现无限分类展示的示例代码:
<?php
// 数据库连接
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "phpwind";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取所有分类
$sql = "SELECT id, name, parent_id FROM categories";
$result = $conn->query($sql);
$cats = [];
while ($row = $result->fetch_assoc()) {
$cats[$row['id']] = $row;
}
// 递归函数生成分类树
function buildTree(array &$elements, $parentId = 0) {
$branch = [];
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$tree = buildTree($cats);
// 输出分类树
function printTree($tree, $level = 0) {
foreach ($tree as $item) {
echo str_repeat(" ", $level) . $item['name'] . "\n";
if (isset($item['children'])) {
printTree($item['children'], $level + 1);
}
}
}
printTree($tree);
$conn->close();
?>
通过以上方法,可以有效解决 PHPWind 无限分类展示中的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云