-1

メニュー項目が配置されるdbテーブルがあります。私のテーブルには、id、parent_id、name の 3 つの列があります。このテーブルからツリーを構築したい。それはどのように行うことができますか?

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 に答える