ホームページ >データベース >mysql チュートリアル >再帰を使用して、親カテゴリを持つデータベースからネストされたメニュー ツリーを生成するにはどうすればよいですか?
メニュー ツリー生成のための再帰
あなたの状況では、カテゴリに親カテゴリを示す「ルート」フィールドがあるデータベース構造があります。 。必要な HTML 出力には、カテゴリ階層を表すネストされたリストが含まれます。これを実現するには、再帰的な PHP 関数を使用できます。
関数の例を次に示します。
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; $ret .= $this->recurse($categories, $category['id'], $level + 1); $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
この関数は、ルート カテゴリに null 値の 'root' フィールドがあることを前提としています。カテゴリを反復処理し、「ルート」フィールドに基づいて子カテゴリを識別し、ネストされたリストを使用して HTML を構築します。
この関数を使用するには:
オプションで、リストを作成する前にカテゴリに子カテゴリがあるかどうかを確認することで、空のリストを避けるように関数を変更できます。
<code class="php">function recurse($categories, $parent = null, $level = 0) { $ret = '<ul>'; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '<li><a href="#"><p class="Tier' . $level . '">' . $category['name'] . '</p></a>'; $sub = $this->recurse($categories, $category['id'], $level + 1); if ($sub != '<ul></ul>') { $ret .= $sub; } $ret .= '</li>'; } } return $ret . '</ul>'; }</code>
この変更された関数は、カテゴリに少なくとも 1 つの子がある場合にのみリストを作成します。
以上が再帰を使用して、親カテゴリを持つデータベースからネストされたメニュー ツリーを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。