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