ホームページ > データベース > mysql チュートリアル > 単一のクエリで PHP と MySQL のツリー メニューを効率的に構築するにはどうすればよいですか?

単一のクエリで PHP と MySQL のツリー メニューを効率的に構築するにはどうすればよいですか?

DDD
リリース: 2024-10-28 03:17:31
オリジナル
685 人が閲覧しました

How to Efficiently Build Tree Menus in PHP and MySQL with a Single Query?

PHP および MySQL でのツリー メニューの構築

PHP で MySQL データベースから順序なしリスト メニュー ツリーを構築しようとする場合、パフォーマンス効率が非常に重要です。これを実現するには、単一のデータベース クエリを利用し、再帰を回避できます。

解決策:

次の PHP 関数は、ページ オブジェクトの配列を入力として受け取ります。それぞれに ID、タイトル、および親 ID 属性が含まれます。オブジェクトの走査を通じて HTML リスト構造を再帰的に生成します。

<code class="php">function build_menu($objects, $parent = 0) {
  $result  = "<ul>";

  foreach ($objects as $object) {
    if ($object['parent_id'] == $parent) {
      $result .= "<li>{$object['title']}";

      if (has_children($objects, $object['id'])) {
        $result .= build_menu($objects, $object['id']);
      }

      $result .= "</li>";
    }
  }

  $result .= "</ul>";
  return $result;
}</code>
ログイン後にコピー

使用法:

関数を利用するには、ページ オブジェクトの配列を取得できます。データベースから取得され、引数としてデータベースに渡されます。この関数は、メニュー ツリーを表す書式設定された HTML リスト構造を返します。

<code class="php">$page_objects = get_page_objects_from_database();
$menu_html = build_menu($page_objects);</code>
ログイン後にコピー

効率の向上:

最適な効率を得るには、次を使用して結果を順序付けることをお勧めします。 SQL クエリ。これにより、オブジェクトが論理的な順序で処理されるようになり、不必要な比較や反復が最小限に抑えられます。さらに、データベース スキーマの重み列または順序列は、メニュー ツリーの整理に役立ちます。

以上が単一のクエリで PHP と MySQL のツリー メニューを効率的に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート