php 無限級分類 獲取頂級分類ID

2022-08-01 08:36:14 字數 826 閱讀 2663

有這樣乙個表,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...