利用兩個for迴圈實現無限級分類
表:
欄位名字段型別
備註預設值
idint
主鍵 auto-increment
name
varchar
分類名稱
pidint
父類id0
頂級分類的 pid 預設就是0了。當我們想取出某個分類的子分類樹的時候,基本思路就是遞迴,當然,出於效率問題不建議每次遞迴都查詢資料庫,通常的做法是先將所有分類取出來,資料儲存到php陣列裡,再進行處理,最後還可以將結果快取起來以提高下次請求的效率。
1.構建資料
$categories = 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,'name'=>'功能機','pid'=>2),
array('id'=>7,'name'=>'超級本','pid'=>3),
array('id'=>8,'name'=>'遊戲本','pid'=>3),
);
目標是將它轉化為下面這種結構
電腦 >筆記本 >>超級本 >> 遊戲本 > 台式電腦
手機 > 智慧型機 > 功能機
2. 處理過程:
原文$tree = array();
//第一步,將所有的分類id作為陣列key,並建立children單元
foreach($categories
as$category)
//第二步,利用引用,將每個分類新增到父類children陣列中,這樣一次遍歷即可形成樹形結構。
foreach ($tree
as$key=>$value)
}print_r($tree);
二。遞迴分類
class category
}return $tree;}}
function tree(&$list,$pid=0,$level=0,$html='--')
} return$tree;}
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實現無限極分類
最近在負責報表自動化管理的小功能,想從工作內容中整理點東西形成部落格。但是過程中發現,這功能並沒有 實現上的難點。基本上值得說的地方,也就定時任務的合理設計,而定時任務之前有相關的博文。再有就是,開發思路和資料庫合理的設計。這部分也不好形成文章。但是好久沒有寫部落格,希望能堅持下來。想起之前寫過幾個...
php實現無限極分類
面試的時候被問到無限極分類的設計和實現,比較常見的做法是在建表的時候,增加乙個pid欄位用來區別自己所屬的分類 array array array id 1,pid 0,name 河北省 array id 2,pid 0,name 北京市 array id 3,pid 1,name 邯鄲市 arra...