無限級分類,主要是通過儲存上級分類的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;
}
以上內容很簡單吧,如有錯誤或者更好的方法,希望可以相互交流。謝謝。!