選單樹產生的遞迴
在您的情況下,您有一個資料庫結構,其中類別有一個「根」欄位指示其父類別。您想要的 HTML 輸出涉及表示類別層次結構的巢狀清單。為了實現這一點,可以使用遞歸 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>
此函數假設根類別有一個值為空值的「root」欄位。它迭代類別,根據“根”字段識別子類別,並使用嵌套列表構建 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中文網其他相關文章!