簡體   English   中英

顯示類別的無限結構->子類別->等?

[英]Displaying Unlimited Structure of Categories --> Subcategories --> etc?

我想這是人們在構建依賴於分類和顯示數據的任何類型的應用程序時的一個相當普遍的要求 - 任何 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

您將如何從數據庫中回顯其層次結構中的每個類別?

我會發布我的代碼,但顯然它的龐大,考慮到嵌套循環的長期方式。

我考慮過編寫一些代碼來找到類別樹的“深度”,但這仍然沒有削減它..想法?

mysql 網站上有一個很好的教程。

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/如果您想閱讀有趣的部分,請轉到The Nested Set Model

坦率地說,我不認為有任何其他/更好的方式來存儲分層數據。

作為提示,您可以使用遞歸。 一般想法可在http://en.wikipedia.org/wiki/Recursion獲得。 即,您編寫 function 來抓取並顯示當前文件夾中的所有文件和文件夾。 然后,您對同一遞歸循環中的每個子文件夾重復應用相同的 function。 等等等等等等。

你所說的結構本質上是一棵樹。 如果使用遞歸,遍歷樹相對簡單。 我不知道您使用的是什么數據庫訪問代碼,但您應該能夠從以下偽代碼中相應地推斷:

function iterate_tree(arr) {
    foreach (item in arr) {
        print item;
        iterate_tree(item.children);
    }
}

在英語中,這意味着打印列表中的一個項目,然后打印其子項,一旦所有子項(及其子項)都打印完畢,就轉到列表中的下一項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM