首頁  >  文章  >  資料庫  >  如何在 PHP 中使用遞歸函數建立 Echo 選單樹?

如何在 PHP 中使用遞歸函數建立 Echo 選單樹?

Susan Sarandon
Susan Sarandon原創
2024-10-27 06:58:29896瀏覽

 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. 它需要三個參數:$categories(類別資料數組)、$ parent(目前父類別ID)和$level(決定縮排等級)。
  2. 它迭代類別並檢查它們的根是否與提供的父 ID 相符。
  3. 如果匹配,則輸出類別名稱,用 li 包裝以及一個具有適當 Tier 類別用於縮排的元素。
  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 中使用遞歸函數建立 Echo 選單樹?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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