-1

我有放置菜单项的数据库表。我的表有 3 列:id、parent_id 和 name。我想从这张表中构建树。怎么做?

4

2 回答 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 回答