首页  >  文章  >  数据库  >  如何在 PHP 和 MySQL 中构建类别层次结构?

如何在 PHP 和 MySQL 中构建类别层次结构?

DDD
DDD原创
2024-10-23 21:01:30529浏览

How to Construct a Category Hierarchy in PHP and MySQL?

PHP 和 MySQL 中的类别层次结构

在典型的数据库结构中,类别以分层方式组织,父类别包含子类别。从 MySQL 数据库检索此层次结构可能是一项具有挑战性的任务。本文探讨如何使用 PHP 和 MySQL 有效构建类别层次结构。

邻接列表模型

邻接列表模型通过将父子关系存储在一张桌子。表中的每一行都包含类别的 ID 及其父类别的 ID。该模型允许使用单个 SQL 查询高效检索类别树。

生成层次结构

要生成类别层次结构,我们使用以下 PHP 代码:

<code class="php">$refs = array();
$list = array();

$sql = "SELECT item_id, parent_id, name FROM items ORDER BY name";
$result = $pdo->query($sql);

foreach ($result as $row) {
    $ref = &$refs[$row['item_id']];

    $ref['parent_id'] = $row['parent_id'];
    $ref['name'] = $row['name'];

    if ($row['parent_id'] == 0) {
        $list[$row['item_id']] = &$ref;
    } else {
        $refs[$row['parent_id']]['children'][$row['item_id']] = &$ref;
    }
}</code>

此代码迭代结果集,创建对数组中每个类别的引用。它使用父子关系构建表示层次结构的多维数组。

创建输出列表

为了显示层次结构,我们使用递归函数:

<code class="php">function toUL(array $array) {
    $html = '<ul>' . PHP_EOL;

    foreach ($array as $value) {
        $html .= '<li>' . $value['name'];
        if (!empty($value['children'])) {
            $html .= toUL($value['children']);
        }
        $html .= '</li>' . PHP_EOL;
    }

    $html .= '</ul>' . PHP_EOL;

    return $html;
}</code>

此函数采用多维数组并生成表示类别层次结构的 HTML 无序列表。它递归地遍历层次结构,根据需要创建嵌套列表。

以上是如何在 PHP 和 MySQL 中构建类别层次结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn