1

データベースから取得し、PHP の標準配列として取得する次のテーブルがあります。

ID | PARENT | Title
1  | null   | MAIN
2  | 1      | SubCat1
3  | 2      | Menu Item 1.1
4  | 2      | Menu Item 1.2
5  | 1      | SubCat2
6  | 5      | Menu Item 2.1
7  | 5      | Menu Item 2.2
8  | null   | MAIN2

私はこのような配列で終わりたいです:

MAIN
   SubCat1
       Menu Item 1.1
       Menu Item 1.2
   SubCat2
       Menu Item 2.1
       Menu Item 2.2
MAIN2

さらに深いレベルをサポートするアルベに違いありません。この構造体でそれを返す再帰関数を作成するにはどうすればよいですか。これまでのところ、私は持っています:

$menu = buildFromData($rows);

private function buildFromData(&$rows, &$result, $parent = null) {
    $unsorted = array();
    foreach ($rows as $r) {
        if ($r->parent == $parent) $result[] = $r;
        else $unsorted[] = $r;
    }
    $rows = $unsorted;
    $this->buildFromData($rows, $result, 1);
}
  1. このようなものを効率的に書く方法はありますか?
  2. または、DB に格納する方法を更新することを検討する必要がありますか?
  3. 保存方法を更新する必要がある場合、何に更新する必要がありますか?

ありがとう!

4

0 に答える 0