我的递归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一些其他方法来存储分层数据库中的数据。 –