如何解决构建数组以表示公司层次结构
| 可以说我具有以下定义表结构: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应用程序中的通用树结构中,以进行显示或进一步处理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。