首頁 >資料庫 >mysql教程 >如何在 PHP 和 MySQL 中建構類別層次結構?

如何在 PHP 和 MySQL 中建構類別層次結構?

DDD
DDD原創
2024-10-23 21:01:30564瀏覽

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