データベースから取得し、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);
}
- このようなものを効率的に書く方法はありますか?
- または、DB に格納する方法を更新することを検討する必要がありますか?
- 保存方法を更新する必要がある場合、何に更新する必要がありますか?
ありがとう!