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 サイトの他の関連記事を参照してください。