我认为这对于人们来说是一个相当普遍的要求,当涉及到构建依赖于按类别排序和显示数据的任何类型的应用程序时 - 任何CMS /论坛/购物车等等我一直在试图撕毁我的头发想到一种方法来显示所有类别和他们的孩子无济于事 - 我所管理的最好的是while循环中的while循环(不过我觉得我可能需要很多级别)但是这在我看来打败了编程点,它需要毫不费力地扩展。
所以,给定:
Category 1
-Sub cat
-Sub cat
--Sub sub cat
--- Sub sub cat
-- Sub sub cat
-Sub cat
Category 2
-Sub cat
-Sub cat
--Sub sub cat
---sub sub sub cat
----sub sub sub sub cat
-sub cat
Category 3
-Sub cat
数据库字段:ID名称ParentIDS
您如何从数据库中回显其层次结构中的每个类别?
我发布了我的代码,但显然它很大,考虑到嵌套循环的长期方法。
我已经考虑过编写一些能够找到类别树的“深度”的代码,但仍然没有削减它......想法?
答案 0 :(得分:1)
在mysql网站上有一个非常好的教程。
http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
如果您想阅读有趣的部分,请转到The Nested Set Model
坦率地说,我认为还没有其他/更好的方法来存储数据。
答案 1 :(得分:1)
作为提示,您可以使用递归。一般的想法可以在http://en.wikipedia.org/wiki/Recursion获得。即你编写的功能可以抓取并显示当前文件夹中的所有文件和文件夹。然后,您在同一递归循环中为每个子文件夹重复应用相同的函数。等等等。
答案 2 :(得分:1)
您所谈论的结构本质上是一棵树。如果使用递归,则在树上迭代相对简单。我不知道你正在使用什么数据库访问代码,但你应该能够从以下的伪代码中进行相应的推断:
function iterate_tree(arr) {
foreach (item in arr) {
print item;
iterate_tree(item.children);
}
}
在英语中,这意味着在列表中打印一个项目,然后打印其子项,一旦所有孩子(及其子项)打印完毕,就转到列表中的下一个项目。