ホームページ > データベース > mysql チュートリアル > MySQL データベース テーブルから階層メニュー ツリーを生成する再帰的な PHP 関数を作成するにはどうすればよいですか?

MySQL データベース テーブルから階層メニュー ツリーを生成する再帰的な PHP 関数を作成するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-29 00:28:02
オリジナル
945 人が閲覧しました

How can I create a recursive PHP function to generate a hierarchical menu tree from a MySQL database table?

再帰関数を使用したエコー メニュー ツリー

再帰関数を使用してデータベース テーブルから階層メニュー ツリーを生成するには、次のアプローチを検討してください。

問題:

MySQL データベースから階層メニュー ツリーを抽出する再帰関数を作成したいと考えています。

状況:

テーブルには次の列が含まれます:

  • id
  • root (親カテゴリの ID、またはルート カテゴリの場合は null)
  • name

期待される HTML 出力:

<li><a href="#"><p class="Tier0">Datori</p></a>
    <ul style="display: block">
        <li><a href="#"><p class="Tier1">Cookies</p></a></li>
        <li><a href="#"><p class="Tier1">Events</p></a></li>
        <li><a href="#"><p class="Tier1">Forms</p></a></li>
        <li><a href="#"><p class="Tier1">Games</p></a></li>
        <li><a href="#"><p class="Tier1">Images</p></a>
            <ul>
                <li><a href="#"><p class="Tier2">CSS</p></a></li>
                <li><a href="#"><p class="Tier2">JavaScript</p></a></li>
                <li><a href="#"><p class="Tier2">JQuery</p></a></li>
            </ul>
        </li>
        <li><a href="#"><p class="Tier1">Navigations</p></a>
            <ul>
                <li><a href="#"><p class="Tier2">CSS</p></a></li>
                <li><a href="#"><p class="Tier2">JavaScript</p></a></li>
                <li><a href="#"><p class="Tier2">JQuery</p></a></li>
            </ul>
        </li>
        <li><a href="#"><p class="Tier1">Tabs</p></a></li>
    </ul>
</li>
<li><a href="#"><p class="Tier0">Washing Machines</p></a></li>
ログイン後にコピー

提案された 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>
ログイン後にコピー

使用法:

  1. カテゴリ リストを多次元配列にフェッチします。
  2. カテゴリ配列を使用して recurse 関数を呼び出すと、出力は目的の HTML メニュー ツリーになります。

追加の考慮事項:

  • 空の UL タグを追加する前に子の数を確認して、それらを防止します。
  • データベース列の使用を検討してください。効率のために子の数を保存します。

以上がMySQL データベース テーブルから階層メニュー ツリーを生成する再帰的な PHP 関数を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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