PHP实现无限级分类的示例代码

2025-01-15 03:56:15   小编

在PHP开发中,无限级分类是一个常见的需求,比如在商品分类、文章分类等场景中都可能会用到。下面为大家分享一个PHP实现无限级分类的示例代码。

我们需要有一个数据库表来存储分类数据。假设我们有一个 categories 表,表结构如下:

CREATE TABLE `categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `parent_id` int(11) DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这个表中,id 是分类的唯一标识,name 是分类名称,parent_id 用于表示该分类的父分类,当 parent_id 为 0 时,表示该分类是顶级分类。

接下来是PHP代码部分。我们先定义一个函数来获取所有分类数据:

function getAllCategories() {
    $conn = new mysqli('localhost', 'username', 'password', 'database_name');
    if ($conn->connect_error) {
        die("连接失败: ". $conn->connect_error);
    }

    $sql = "SELECT * FROM categories ORDER BY parent_id, id";
    $result = $conn->query($sql);

    $categories = [];
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $categories[] = $row;
        }
    }

    $conn->close();
    return $categories;
}

然后,我们再定义一个递归函数来构建无限级分类的树形结构:

function buildCategoryTree($categories, $parentId = 0) {
    $tree = [];
    foreach ($categories as $category) {
        if ($category['parent_id'] == $parentId) {
            $children = buildCategoryTree($categories, $category['id']);
            if (!empty($children)) {
                $category['children'] = $children;
            }
            $tree[] = $category;
        }
    }
    return $tree;
}

最后,我们可以这样调用这两个函数来获取并输出无限级分类的树形结构:

$categories = getAllCategories();
$categoryTree = buildCategoryTree($categories);

echo '<pre>';
print_r($categoryTree);
echo '</pre>';

通过上述代码,我们实现了从数据库中获取分类数据,并将其构建成一个无限级分类的树形结构。这样,在实际项目中,我们就可以方便地对分类数据进行展示和处理。

掌握PHP实现无限级分类的方法,能有效提升开发效率,优化系统架构,为用户提供更好的分类展示和管理体验。无论是小型项目还是大型企业级应用,这种技术都有着广泛的应用前景。

TAGS: 示例代码 PHP 无限级分类 PHP无限级分类

欢迎使用万千站长工具!

Welcome to www.zzTool.com