PHP - 从MySQL数据创建嵌套数组

时间:2011-02-24 23:01:53

标签: php mysql arrays recursion nested

我有一些数据存储在表中,如下所示:

id  parent_id  name
1   0          Entry 1
2   0          Entry 2
3   0          Entry 3
4   1          Child of entry 1

我想把它变成一个嵌套数组,如下所示:

array(
    array(
        'id' => 1,
        'parent_id' => 0,
        'name' => 'Entry 1',
        'children' => array(...)
    ),
    ...
);

理想情况下,它需要支持无限量的嵌套(带孩子的孩子)。我的表是否设置为支持这个,如果是这样,我将如何使用表中的数据生成这种数组?如果没有,我应该如何设置我的桌子?

2 个答案:

答案 0 :(得分:5)

这里有一个关于在mysql中管理分层数据的非常好的描述: managing hierarchical data 这是构建嵌套数组的另一个好例子: building nested arrays

您可以考虑使用嵌套集模型。如果你要查询mutch,那么它比你现在使用的邻接模型更好。

希望有所帮助。

答案 1 :(得分:0)

您不会从“普通”SQL数据集中获取分层数据,但您可以编写一个递归执行此操作的函数。我目前无法提供代码,但您可能会明白这一点。