成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

超優(yōu)雅!兩行代碼搞定 php 無(wú)限級(jí)分類 獲取頂級(jí)分類ID

hedzr / 2983人閱讀

摘要:有這樣一個(gè)表,是分類的,是分類名稱,是上級(jí)分類的?,F(xiàn)在有個(gè)分類,程序要找到它上級(jí)的上級(jí)的上級(jí)分類的,簡(jiǎn)單說(shuō)就是找出頂級(jí)分類的。比如新鮮水果的是,對(duì)應(yīng)父類是,而的父是,沒有父類,也就是頂級(jí)分類了。

有這樣一個(gè)表,id是分類的ID,name是分類名稱,pid是上級(jí)分類的ID。

現(xiàn)在有個(gè)分類ID,程序要找到它上級(jí)的上級(jí)的上級(jí)……分類的ID,簡(jiǎn)單說(shuō)就是找出頂級(jí)分類的ID。
比如“新鮮水果”的ID是13,對(duì)應(yīng)父類ID是5,而5的父ID是1,1沒有父類,也就是頂級(jí)分類了。

以前年輕氣盛不懂事,總想著用遞歸來(lái)查找,然后再將結(jié)果緩存來(lái)解決性能問題。
后來(lái)又試過(guò)將整個(gè)表緩存起來(lái),再遞歸查找。
再后來(lái)……似乎比較少有機(jī)會(huì)遇到無(wú)限級(jí)分類……

最近有個(gè)同事問我怎么“優(yōu)雅”的解決這個(gè)問題。
于是我靈機(jī)一動(dòng),就有了如下解決方案:

 pid
    1 => 0,
    // 省略...
    5 => 1,
    // 省略...
    13 => 5
];
// 建議將這數(shù)組緩存起來(lái)

$id = 13;
while($arr[$id]) {
    $id = $arr[$id];
}
echo $id; // 1

不得不說(shuō):真是太優(yōu)雅了!連我都佩服我自己了,同事更是五體投地,痛哭流涕。
因?yàn)樗麑懥藥资醒h(huán)再判斷再遞歸的代碼,被我用兩行代碼替換了……

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21420.html

相關(guān)文章

  • 優(yōu)雅!node.js 無(wú)限級(jí)分類,無(wú)遞歸獲取所有下級(jí)分類ID。

    摘要:昨天幫同事解決問題,于是誕生了超優(yōu)雅兩行代碼搞定無(wú)限級(jí)分類獲取頂級(jí)分類這篇文章。這次要解決的問題是根據(jù)分類,獲取所有下級(jí)分類的,這里說(shuō)的所有下級(jí)分類,是包含下級(jí)下下級(jí)下下下級(jí)另外剛好在學(xué)習(xí),于是用上了對(duì)象。 昨天幫同事解決問題,于是誕生了超優(yōu)雅!兩行代碼搞定 php 無(wú)限級(jí)分類 獲取頂級(jí)分類ID這篇文章。 晚上回家做自己的node.js項(xiàng)目的時(shí)候,又遇到關(guān)于無(wú)限級(jí)分類的問題了。其實(shí)也不...

    calx 評(píng)論0 收藏0
  • 在數(shù)據(jù)庫(kù)中存儲(chǔ)一棵樹,實(shí)現(xiàn)無(wú)限級(jí)分類

    摘要:第三條同樣需要遞歸,因?yàn)橥ㄟ^(guò)一個(gè)分類,數(shù)據(jù)庫(kù)中只存儲(chǔ)了其直屬父類,需要通過(guò)遞歸到頂級(jí)分類才能獲取到它們之間的所有分類信息。 原文發(fā)表于我的博客: https://blog.kaciras.net/article/36 在一些系統(tǒng)中,對(duì)內(nèi)容進(jìn)行分類是必需的功能。比如電商就需要對(duì)商品做分類處理,以便于客戶搜索;論壇也會(huì)分為很多板塊;門戶網(wǎng)站、也得對(duì)網(wǎng)站的內(nèi)容做各種分類。 分類對(duì)于一個(gè)內(nèi)容展...

    Airy 評(píng)論0 收藏0
  • PHP框架之ThinkPHP模塊開發(fā)系列八,無(wú)限級(jí)分類的刪除

    摘要:我們?cè)谛陆ㄒ粋€(gè)刪除前的鉤子函數(shù),再利用遞歸方法實(shí)現(xiàn)子欄目的刪除。最后我們刪除把鉤子函數(shù)恢復(fù)到原始狀態(tài)在瀏覽器中輸入,然后點(diǎn)擊美國(guó)一欄中的刪除,此時(shí)會(huì)同時(shí)刪除美國(guó)下的紐約。至此,無(wú)限級(jí)分類的刪除功能操作完畢。 在此現(xiàn)更正一下之前的預(yù)告,之前忘記了先應(yīng)該把無(wú)限級(jí)分類欄目列表功能做完,也就是刪除功能還沒做,所以今天我們先做刪除,下一節(jié)再做面包屑導(dǎo)航。非常抱歉。 同時(shí),不知道是什么原因,上一節(jié)...

    BWrong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

hedzr

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<