ホームページ  >  記事  >  データベース  >  PHP/MySQL で階層データ (カテゴリ) を視覚化する方法?

PHP/MySQL で階層データ (カテゴリ) を視覚化する方法?

DDD
DDDオリジナル
2024-10-23 18:22:35523ブラウズ

How to Visualize Hierarchical Data (Categories) in PHP/MySQL?

PHP/MySQL のカテゴリ階層

カテゴリなどの階層データを扱う場合、それらを構造化された方法で表現することが重要です。一般的なアプローチの 1 つは、隣接リスト モデルを使用することです。このモデルでは、各行がカテゴリを表し、その親カテゴリを示すフィールドがあります。

階層の取得

PHP を使用すると、 MySQL からカテゴリ データを取得し、単一パスで階層を構築できます。 Nate Weiner の「ワンパス親子配列構造」からインスピレーションを得た以下のコード:

<code class="php">$refs = [];
$list = [];

$sql = "SELECT category_id, parent_id, category_name FROM categories ORDER BY category_name";

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

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

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

このループは 2 つの配列を設定します: $refs には各カテゴリへの参照が含まれ、$list には最上位のカテゴリが含まれます(親なし)。

階層表現の作成

階層の視覚的表現を作成するには、再帰関数を使用してネストされた HTML リストを生成できます。次のコードを考えてみましょう。

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

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

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

    return $html;
}</code>

この関数は、カテゴリの配列を入力として受け取り、ネストされた HTML リストを再帰的に構築します。結果の HTML を出力して、カテゴリ階層を表示できます。

以上がPHP/MySQL で階層データ (カテゴリ) を視覚化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。