ホームページ >データベース >mysql チュートリアル >PHP/MySQL で再帰なしでツリー メニューを作成する方法
Background:
データベース データからのツリー メニューの構築は、共通のタスク。この記事では、再帰を使用せずにページ オブジェクトの PHP 配列から順序なしリスト (UL) メニュー ツリーを構築する方法について説明します。
データ セットアップ:
ページ オブジェクトには次のものがあります。次の属性:
関数の概要:
ページ オブジェクトの配列を取得し、対応する HTML UL ツリーを生成する関数を作成します。
ヘルパー関数: has_children()
この関数は、ページに子ページがあるかどうかをチェックします。
<code class="php">function has_children($rows, $id) { foreach ($rows as $row) { if ($row['parent_id'] == $id) return true; } return false; }</code>
再帰的 Build_Menu() 関数
build_menu() 関数は配列を反復処理します。そして、HTML UL ツリーを生成します。変数 $parent を使用して現在の親ページを追跡します。
<code class="php">function build_menu($rows, $parent=0) { $result = "<ul>"; foreach ($rows as $row) { if ($row['parent_id'] == $parent){ $result.= "<li>{$row['title']}"; if (has_children($rows,$row['id'])) $result.= build_menu($rows,$row['id']); $result.= "</li>"; } } $result.= "</ul>"; return $result; }</code>
出力:
ページ オブジェクトの配列を build_menu() に渡した後関数を使用すると、結果の HTML UL ツリーをエコーできます。出力は、データベース データを表すネストされた UL メニュー構造になります。
<code class="php">echo build_menu($menu);</code>
以上がPHP/MySQL で再帰なしでツリー メニューを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。