构建数组以表示公司层次结构

问题描述

| 可以说我具有以下定义表结构:
id(int),related_to(int),description(text
) 该表包含类似于以下内容的数据:
id   related_to     description
1        0          departmen1
2        1          section1
3        2          devision1
4        0          departmen2
5        4          section2
6        4          etc....
我需要一个sql语句或PHP代码来表示一个单独的数组元素中的每个层次结构。 结果必须是
$data=array(
0=>\'department1\',\'section1\',\'devision1\'
2=>\'departmen2\',\'section2\',\'devision2\'
3=> \'departmen1\',\'section3\',.......
);
做这个的最好方式是什么? 谢谢。     

解决方法

        在PHP中使用树状结构的最佳方法是使用对象。一个很好的例子可以在这里找到。 向树对象添加一个函数,该函数以所需的数组格式返回子代,并在子对象上调用相同的函数。通过在顶层对象上调用一个函数,您将收到所需格式的所有子级数组。有关递归函数的更多信息,请参见树遍历。     ,        以我的经验,嵌套集可以更好地解决此问题。在应用程序级别使用递归函数会浪费大量网络时间,尤其是如果您的结构非常庞大时。尽管使用它可能有点奇怪,但是一旦有了适当的功能即可操作嵌套集,它们将变得易于使用。 请参阅:在MySQL中管理分层数据 嵌套集可以处理无限深的树,并且可以在单个查询中返回具有父子关系的整个树。您还可以通过单个查询返回\“ lineage \”,而无需求助于递归或应用程序排序。 从单个SQL查询取回数据后,您可以轻松地将其分类到PHP应用程序中的通用树结构中,以进行显示或进一步处理。