【发布时间】:2011-10-01 07:09:45
【问题描述】:
我的递归 php 函数看起来像这样。它根据父子结构从 db 表生成菜单
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,不如用一组ids调用一次,然后执行一次查询。您只需重写查询以获取一个数组作为输入并从数据库中抓取该数组的所有记录
-
我无法用数组计算出来。
-
@TT13:检查这个问题:stackoverflow.com/questions/4048151/… 了解在数据库中存储分层数据的其他一些方法。