最近在負責報表自動化管理的小功能,想從工作內容中整理點東西形成部落格。但是過程中發現,這功能並沒有**實現上的難點。基本上值得說的地方,也就定時任務的合理設計,而定時任務之前有相關的博文。再有就是,開發思路和資料庫合理的設計。這部分也不好形成文章。
但是好久沒有寫部落格,希望能堅持下來。想起之前寫過幾個遞迴,乾脆就整理一篇簡單的無限極分類。
無限極分類,其實也就是乙個遞迴演算法。合理的利用遞迴確實能節省不少時間,但是對遞迴理解不夠,最後坑的還是自己。
本文以乙個簡單的商品分類,來實現乙個無限極分類。
create
table shop (
id int
notnull auto_increment,
shop_name varchar(128) not
null
default
'', parent_id int
notnull
default
0, primary
key (id)
)
表結構也比較簡單,這裡不詳細說明。parent_id即用來標識當前記錄所屬分類。
public
function
shop_list
($data,&$list)
}return
$list;
}
實現邏輯是這樣的,先查詢出頂層資料。再通過遞迴的方式,逐級查詢資料。
方法的第二個引數,使用了引用。
為了避免遞迴中不停查詢資料,造成資料了壓力。可以先把所有資料查詢出來之後,通過陣列去做遞迴。同樣也能完成無限極分類。
public
function
loop_arr
($data,$pid=0)
}return
$list;
}
記住一點,遞迴中一定要有判斷。不然會無限迴圈下去,直到伺服器崩潰。 php實現無限極分類
利用兩個for迴圈實現無限級分類 表 欄位名字段型別 備註預設值 idint 主鍵 auto increment name varchar 分類名稱 pidint 父類id0 頂級分類的 pid 預設就是0了。當我們想取出某個分類的子分類樹的時候,基本思路就是遞迴,當然,出於效率問題不建議每次遞迴都...
PHP實現無限極分類
created by epp4.user t470 date 15 08 08 time 上午12 00 準備陣列,代替從資料庫中檢索出的資料 共有三個必須欄位id,name,pid header content type text html charset utf 8 categories arr...
php實現無限極分類
面試的時候被問到無限極分類的設計和實現,比較常見的做法是在建表的時候,增加乙個pid欄位用來區別自己所屬的分類 array array array id 1,pid 0,name 河北省 array id 2,pid 0,name 北京市 array id 3,pid 1,name 邯鄲市 arra...