从数组递归构建树的最简单方法?

时间:2013-07-26 14:51:51

标签: php

我有下表,我从数据库中获取并以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 个答案:

没有答案