ホームページ  >  記事  >  データベース  >  PHP/MySQL で再帰なしでツリー メニューを作成する方法

PHP/MySQL で再帰なしでツリー メニューを作成する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-27 20:45:02895ブラウズ

How to Create a Tree Menu in PHP/MySQL Without Recursion?

再帰なしの PHP / MySQL Build Tree Menu

Background:

データベース データからのツリー メニューの構築は、共通のタスク。この記事では、再帰を使用せずにページ オブジェクトの PHP 配列から順序なしリスト (UL) メニュー ツリーを構築する方法について説明します。

データ セットアップ:

ページ オブジェクトには次のものがあります。次の属性:

  • id
  • title
  • parent_id (ルート ページの場合は null に設定)

関数の概要:

ページ オブジェクトの配列を取得し、対応する 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 サイトの他の関連記事を参照してください。

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