首頁  >  文章  >  資料庫  >  如何在沒有遞歸的情況下在 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 無需遞歸構建樹形選單

背景:

從資料庫資料中建立樹形選單可以是共同任務。本文探討如何在不使用遞歸的情況下從 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn