ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。