多级树

时间:2013-02-25 17:54:43

标签: php mysql arrays

我有db表,其中放置了菜单项。我的表有3列:id,parent_id和name。我想从这张桌子构建树。 怎么做?

2 个答案:

答案 0 :(得分: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并打印列表。

答案 1 :(得分:1)

虽然可以在没有nested sets的情况下执行此操作,但嵌套集会使您的查询更有效率。

以下是一些有关如何设置的好教程:

http://www.sitepoint.com/hierarchical-data-database/ (它实际上并没有使用术语嵌套集,但第2页描述了“修改预订树遍历”标题下的相同概念)

http://mycrazydream.net/2009/04/nested-sets-for-category-structure-in-a-mysql-database/