当前位置:首页 > PHP

php无限分类的实现

2026-01-14 12:40:13PHP

PHP无限分类的实现

无限分类是一种常见的树形结构数据组织方式,适用于商品分类、菜单管理、地区选择等场景。以下是几种实现方法:

递归实现法

递归是最直观的实现方式,通过函数自身调用来遍历子分类。数据库表结构通常包含idnameparent_id字段:

CREATE TABLE categories (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    parent_id INT DEFAULT 0
);

递归查询代码示例:

function getTree($parentId = 0, $level = 0) {
    $tree = [];
    $result = mysqli_query($conn, "SELECT * FROM categories WHERE parent_id = $parentId");

    while ($row = mysqli_fetch_assoc($result)) {
        $row['level'] = $level;
        $tree[] = $row;
        $tree = array_merge($tree, getTree($row['id'], $level + 1));
    }

    return $tree;
}

闭包表(Closure Table)实现

闭包表通过额外的关系表存储节点间的所有路径关系,适合频繁查询的场景:

CREATE TABLE category_closure (
    ancestor INT NOT NULL,
    descendant INT NOT NULL,
    depth INT NOT NULL,
    PRIMARY KEY (ancestor, descendant)
);

查询所有子节点:

$query = "SELECT c.* FROM categories c
          JOIN category_closure cc ON c.id = cc.descendant
          WHERE cc.ancestor = $parentId";

嵌套集模型(Nested Set)

嵌套集通过leftright值表示节点在树中的位置:

ALTER TABLE categories ADD COLUMN lft INT, ADD COLUMN rgt INT;

查询子树:

$query = "SELECT node.* FROM categories node, categories parent
          WHERE node.lft BETWEEN parent.lft AND parent.rgt
          AND parent.id = $parentId
          ORDER BY node.lft";

路径枚举法(Path Enumeration)

通过存储完整路径字符串实现,如1/4/7表示节点7的路径:

ALTER TABLE categories ADD COLUMN path VARCHAR(255);

查询子节点:

$query = "SELECT * FROM categories WHERE path LIKE '$parentPath/%'";

每种方法各有优劣:

php无限分类的实现

  • 递归实现简单但效率较低
  • 闭包表查询高效但写入复杂
  • 嵌套集适合读取频繁场景
  • 路径枚举直观但移动节点成本高

实际选择应根据项目具体需求决定。

标签: php
分享给朋友:

相关文章

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php 实现文件下载

php 实现文件下载

实现文件下载的基本方法 使用 PHP 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

无限分类实现 php

无限分类实现 php

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、部门架构等。以下是几种常见的实现方式: 邻接列表模式(Adjacency List) 邻接列表是最简单的实现方式,通过在每个记录…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

php 实现评论

php 实现评论

实现 PHP 评论功能 数据库设计 创建数据库表存储评论数据,通常包含以下字段: id:评论唯一标识 user_id:用户ID content:评论内容 created_at:评论时间 parent…