無限級分類,主要是通過儲存上級分類的id以及分類路徑來實現
在我的Simpla中,用到了無限分類,使用了PHP的傳引用思想實現無限分類的方法,可以完美展示類似這樣的分類模式。
id pid name
1 0 四川
2 0 重慶
3 1 成都
4 1 綿陽
5 3 高新區
代碼如下所示:
/** * 數組變成無限級分類--傳引用思想 * @param array $items * @return array */ public static function get_tree($orig) { //解決下標不是1開始的問題 $items = array(); foreach ($orig as $key => $value) { $items[$value[‘id‘]] = $value; } //開始組裝 $tree = array(); foreach ($items as $key => $item) { if ($item[‘pid‘] == 0) { //為0,則為1級分類 $tree[] = &$items[$key]; } else { if (isset($items[$item[‘pid‘]])) { //存在值則為二級分類 $items[$item[‘pid‘]][‘child‘][] = &$items[$key]; //傳引用直接賦值與改變 } else { //至少三級分類 //由於是傳引用思想,這裡將不會有值 $tree[] = &$items[$key]; } } } return $tree; }
以上內容很簡單吧,如有錯誤或者更好的方法,希望可以相互交流。謝謝。!