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

Mary-Kate Olsen
リリース: 2024-10-27 20:45:02
オリジナル
894 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!