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. 或者我应该考虑更新它在数据库中的存储方式?
  3. 如果我必须更新它的存储方式,我必须将它更新为什么?

谢谢!

4

0 回答 0