[英]recursive function for dynamic multilevel menu php
我有一個像這樣的mysql
表結構:
CREATE TABLE IF NOT EXISTS menu(
id INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
p_id INT(5), -- parent id
sort_id INT(5) NOT NULL, -- for position
title VARCHAR(50) NOT NULL,
etc ...);
數據結構如下所示:
id | p_id | sort_id | title
1 | NULL | 1 | root_1
2 | 1 | 1 | sub1 of root_1
3 | 1 | 2 | sub2 of root_1
4 | NULL | 2 | root_2
5 | 2 | 1 | sub1 of root_2
6 | 2 | 2 | sub2 of root_2
7 | 3 | 1 | sub1 of `sub2 of root_1`
我已經創建了一個php腳本來顯示一個級別的子菜單,但是我無法決定如何獲得其他級別。 我認為需要遞歸函數,例如,才能在此任務中獲取sub1 of sub2 of root_1
元素sub1 of sub2 of root_1
。
如果有人對在這種情況下如何開始創建遞歸函數有任何想法,請告訴我,謝謝:)
最好首先將其轉換為樹型結構:
Menu Top
|
Nodes with NULL p_id
|
Children
您可以通過創建包含子項數組的MenuNode類來實現此目的。 您不必那樣做,但是它將使創建遞歸函數輸出菜單變得更加容易。
函數generate_menu_list($ parent_id){$ result = mysql_query(“ SELECT * FROM menu WHERE p_id ='$ parent_id'by sort_id”); if(結果){而($ row = mysql_fetch_array($ result)){
$ count = mysql_query(“ SELECT count(0)as cnt FROM menu_master WHERE parent_id ='”。$ row ['id']。“'”); $ countrow = mysql_fetch_array($ count);
echo '<li><a href="'$linktoredirect.'"><span class="fa fa-user"></span>'.$row['title '].'</a> ';
if($countrow['cnt']>0)
{
echo '<ul>';
$this->generate_menu_list($row['id']);
echo '</ul>';
}
echo '</li>';
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.