我有放置菜单项的数据库表。我的表有 3 列:id、parent_id 和 name。我想从这张表中构建树。怎么做?
问问题
412 次
2 回答
2
试试这个代码
$query = "SELECT * FROM menu_items";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$myTreeArray = array();
while ($row = mysql_fetch_assoc($result)) {
if(!isset($myTreeArray[$row['parent_id']])){
$myTreeArray[$row['parent_id']] = array();
}
array_push($myTreeArray[$row['parent_id']], array($row['id'] => $row['name']));
}
}
echo '<pre>';
print_r($myTreeArray);
echo '</pre>';
这将为您提供一个关联数组,其中包含由其父 ID 索引的菜单项列表。然后,您可以循环$myTreeArray
并打印列表。
于 2013-02-25T18:16:21.953 回答
1
虽然可以在没有嵌套集合的情况下执行此操作,但嵌套集合将使您的查询更加高效。
这里有一些关于如何设置它的好教程:
http://www.sitepoint.com/hierarchical-data-database/ (它实际上并没有使用术语嵌套集,但第 2 页在“修改的预序树遍历”标题下描述了相同的概念)
http://mycrazydream.net/2009/04/nested-sets-for-category-structure-in-a-mysql-database/
于 2013-02-25T18:02:20.053 回答