ホームページ >データベース >mysql チュートリアル >PHP で再帰関数を使用してエコー メニュー ツリーを作成する方法
データベースに格納されている階層メニュー構造をたどって出力する再帰関数の作成HTML は難しい場合があります。カテゴリとその親カテゴリを含むテーブルが与えられた場合、タスクは階層を視覚的に表すメニュー ツリーを生成することです。
この問題を解決するには、再帰関数が必要です。アイデアは、ルート カテゴリから開始し、その子を見つけて、各子で関数を再帰的に呼び出し、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>
関数を使用するには:
初期実装では空の
<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>
この変更により、子を持つカテゴリのみが
または、各カテゴリに子の数を追加し、
のみを含めることもできます。子の数がゼロより大きい場合。以上がPHP で再帰関数を使用してエコー メニュー ツリーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。