我的遞歸PHP函數看起來像那樣。它基於母子結構Php遞歸函數優化
function generateMenu($parent, $level, $menu, $db){
$q = $db->query("select id, name FROM menu WHERE parent = '$parent' AND showinmenu='$menu'");
if($level > 0 && $q->num_rows > 0){
echo "\n<ul>\n";
}
while($row=$q->fetch_object()){
echo "<li>";
echo '<a href="?page=' . $row->id . '">' . $row->name . '</a>';
//display this level's children
generateMenu($row->id, $level++, $menu, $db);
echo "</li>\n\n";
}
if($level > 0 && $q->num_rows > 0){
echo "</ul>\n";
}
}
它可以從數據庫表生成菜單,但我覺得它確實幫了什麼工作。有什麼需要優化?
,而不是調用函數generateMenu幾次,你爲什麼不只是有一組ID叫了一次,一旦執行查詢。你只需要重寫查詢來獲得一個數組的輸入,並從數據庫中抓取該數組的所有記錄 –
我無法弄清楚數組。 – demonoid
@ TT13:檢查這個問題:http://stackoverflow.com/questions/4048151/what-are-the-options-for-storing-hierarchical-data-in-a-relational-database一些其他方法來存儲分層數據庫中的數據。 –