」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用遞歸從具有父類別的資料庫產生巢狀選單樹?

如何使用遞歸從具有父類別的資料庫產生巢狀選單樹?

發佈於2024-11-07
瀏覽:560

How can recursion be used to generate a nested menu tree from a database with parent categories?

選單樹產生的遞歸

在您的情況下,您有一個資料庫結構,其中類別有一個「根」欄位指示其父類別。您想要的 HTML 輸出涉及表示類別層次結構的巢狀清單。為此,可以使用遞歸 PHP 函數。

這是一個範例函數:

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $ret .= $this->recurse($categories, $category['id'], $level 1); $ret .= '
  • '; } } return $ret . '
'; }

此函數假設根類別有一個值為空值的「根」欄位。它遍歷類別,根據“根”字段識別子類別,並使用嵌套列表建立 HTML。

要使用此函數:

  1. 在資料庫中查詢多維類別數組。
  2. 以類別數組和 null 作為父參數呼叫遞歸函數。
  3. 將傳回值賦給變數(例如 $Tree)。
  4. 回顯 $Tree 變數以顯示嵌套選單樹。

或者,您可以修改函數以避免空列表,方法是檢查創建列表之前類別有子類別:

function recurse($categories, $parent = null, $level = 0) {
    $ret = '
    '; foreach ($categories as $index => $category) { if ($category['root'] == $parent) { $ret .= '
  • ' . $category['name'] . '

    '; $sub = $this->recurse($categories, $category['id'], $level 1); if ($sub != '
      ') { $ret .= $sub; } $ret .= '
    • '; } } return $ret . '
    '; }

    此修改後的函數僅在類別至少有一個子類別時才會建立清單。

    最新教學 更多>

    免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

    Copyright© 2022 湘ICP备2022001581号-3