有這樣乙個表,id
是分類的id,name
是分類名稱,pid
是上級分類的id。
現在有個分類id,程式要找到它上級的上級的上級……分類的id,簡單說就是找出頂級分類的id。比如「新鮮水果」的id是13,對應父類id是5,而5的父id是1,1沒有父類,也就是頂級分類了。
以前年輕氣盛不懂事,總想著用遞迴來查詢,然後再將結果快取來解決效能問題。
後來又試過將整個表快取起來,再遞迴查詢。
再後來……似乎比較少有機會遇到無限級分類……
最近有個同事問我怎麼「優雅」的解決這個問題。於是我靈機一動,就有了如下解決方案:
<?php不得不說:真是太優雅了!連我都佩服我自己了,同事更是五體投地,痛哭流涕。因為他寫了幾十行迴圈再判斷再遞迴的**,被我用兩行**替換了……$sql = "
select id, pid from tablename ";
//查詢後 將結果處理成 如下陣列格式
$arr =[
//id => pid
1 => 0
,
//省略...
5 => 1
,
//省略...
13 => 5
];//
建議將這陣列快取起來
$id = 13
;while
($arr[$id])
echo $id;
//1
PHP無限級分類
建表sql如下 create table ifnot exists deepcate id int 4 notnull pid int 11 notnull catename varchar 30 not null cateorder int 11 unsigned notnull default ...
PHP 無限級分類 遞迴
arr array array id 1,name 電腦 pid 0 array id 2,name 手機 pid 0 array id 3,name 筆記本 pid 1 array id 4,name 台式電腦 pid 1 array id 5,name 智慧型機 pid 2 array id 6...
無限級分類
相信在實際專案中很多人在做專案的時候都會用到無限級分類,無限級分類說白了就是乙個遞迴,遞迴在我們的專案開發中起到很重要的作用,如 麵包屑導航等。下面我們演示乙個遞迴的案例 area array array id 1,name 安徽 parent 0 array id 2,name 海淀 parent...