/** * 把返回的數據集轉換成Tree * @param array $list 要轉換的數據集 * @param string $pid parent標記字段 * @param string $level level標記字段 * @return array * @author 麥當苗兒 <zuojiazi@vip.qq.com> */ function list_to_tree($list, $pk='id', $pid = 'pid', $child = '_child', $root = 0) { // 建立Tree $tree = array(); if(is_array($list)) { //var_dump($list); // 建立基於主鍵的數組引用 $refer = array(); foreach ($list as $key => $data) { $refer[$data[$pk]] =& $list[$key]; } //var_dump($refer); foreach ($list as $key => $data) { // 判斷是否存在parent $parentId = $data[$pid]; if ($root == $parentId) { $tree[] =& $list[$key]; }else{ if (isset($refer[$parentId])) { $parent =& $refer[$parentId]; $parent[$child][] =& $list[$key]; } } } } return $tree; }
這個是從onethink裏面提取出來的一個函數,原來本身也有寫過一個相似的他這個更簡潔。要生成無限級分類的不想把數據庫設計的太過複雜的能夠用這個。php