ホームページ >データベース >mysql チュートリアル >PHP で再帰関数を使用してエコー メニュー ツリーを作成する方法

PHP で再帰関数を使用してエコー メニュー ツリーを作成する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 06:58:291009ブラウズ

 How to Create an Echo Menu Tree Using a Recursive Function in PHP?

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

問題の概要

データベースに格納されている階層メニュー構造をたどって出力する再帰関数の作成HTML は難しい場合があります。カテゴリとその親カテゴリを含むテーブルが与えられた場合、タスクは階層を視覚的に表すメニュー ツリーを生成することです。

再帰関数によるアプローチ

この問題を解決するには、再帰関数が必要です。アイデアは、ルート カテゴリから開始し、その子を見つけて、各子で関数を再帰的に呼び出し、HTML 出力を構築していくというものです。

PHP 関数の実装

ここにあります。 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. これは 3 つのパラメータを取ります: $categories (カテゴリ データの配列)、$parent (現在の親カテゴリ ID)、および $level (これによって決定されます)インデントのレベル)。
  2. カテゴリを反復処理し、そのルートが指定された親 ID と一致するかどうかを確認します。
  3. 一致する場合は、カテゴリ名を li で囲んで出力します。
  4. 次に、カテゴリの次のレベルで自分自身を再帰的に呼び出し、新しい親 ID を設定してレベルをインクリメントします。

使用法

関数を使用するには:

  1. データベースにクエリを実行してすべてのカテゴリを取得します。
  2. 最初のパラメータとしてカテゴリ データを使用して recurse() を呼び出します。
  3. 返された 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>

    この変更により、子を持つカテゴリのみが

      を持つようになります。

      または、各カテゴリに子の数を追加し、

      のみを含めることもできます。子の数がゼロより大きい場合。

      以上がPHP で再帰関数を使用してエコー メニュー ツリーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。