摘要:有這樣一個表,是分類的,是分類名稱,是上級分類的。現在有個分類,程序要找到它上級的上級的上級分類的,簡單說就是找出頂級分類的。比如新鮮水果的是,對應父類是,而的父是,沒有父類,也就是頂級分類了。
有這樣一個表,id是分類的ID,name是分類名稱,pid是上級分類的ID。
現在有個分類ID,程序要找到它上級的上級的上級……分類的ID,簡單說就是找出頂級分類的ID。
比如“新鮮水果”的ID是13,對應父類ID是5,而5的父ID是1,1沒有父類,也就是頂級分類了。
以前年輕氣盛不懂事,總想著用遞歸來查找,然后再將結果緩存來解決性能問題。
后來又試過將整個表緩存起來,再遞歸查找。
再后來……似乎比較少有機會遇到無限級分類……
最近有個同事問我怎么“優雅”的解決這個問題。
于是我靈機一動,就有了如下解決方案:
pid 1 => 0, // 省略... 5 => 1, // 省略... 13 => 5 ]; // 建議將這數組緩存起來 $id = 13; while($arr[$id]) { $id = $arr[$id]; } echo $id; // 1
不得不說:真是太優雅了!連我都佩服我自己了,同事更是五體投地,痛哭流涕。
因為他寫了幾十行循環再判斷再遞歸的代碼,被我用兩行代碼替換了……
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21420.html
摘要:昨天幫同事解決問題,于是誕生了超優雅兩行代碼搞定無限級分類獲取頂級分類這篇文章。這次要解決的問題是根據分類,獲取所有下級分類的,這里說的所有下級分類,是包含下級下下級下下下級另外剛好在學習,于是用上了對象。 昨天幫同事解決問題,于是誕生了超優雅!兩行代碼搞定 php 無限級分類 獲取頂級分類ID這篇文章。 晚上回家做自己的node.js項目的時候,又遇到關于無限級分類的問題了。其實也不...
摘要:第三條同樣需要遞歸,因為通過一個分類,數據庫中只存儲了其直屬父類,需要通過遞歸到頂級分類才能獲取到它們之間的所有分類信息。 原文發表于我的博客: https://blog.kaciras.net/article/36 在一些系統中,對內容進行分類是必需的功能。比如電商就需要對商品做分類處理,以便于客戶搜索;論壇也會分為很多板塊;門戶網站、也得對網站的內容做各種分類。 分類對于一個內容展...
摘要:我們在新建一個刪除前的鉤子函數,再利用遞歸方法實現子欄目的刪除。最后我們刪除把鉤子函數恢復到原始狀態在瀏覽器中輸入,然后點擊美國一欄中的刪除,此時會同時刪除美國下的紐約。至此,無限級分類的刪除功能操作完畢。 在此現更正一下之前的預告,之前忘記了先應該把無限級分類欄目列表功能做完,也就是刪除功能還沒做,所以今天我們先做刪除,下一節再做面包屑導航。非常抱歉。 同時,不知道是什么原因,上一節...
閱讀 3014·2021-11-16 11:42
閱讀 3651·2021-09-08 09:36
閱讀 950·2019-08-30 12:52
閱讀 2481·2019-08-29 14:12
閱讀 769·2019-08-29 13:53
閱讀 3583·2019-08-29 12:16
閱讀 644·2019-08-29 12:12
閱讀 2469·2019-08-29 11:16