相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP 無(wú)限級(jí)分類
有一段時(shí)間沒(méi)用過(guò)無(wú)限極分類,不巧今天又用到,所以特地去翻箱回顧以前。為了避免以后找起來(lái)麻煩,特地貼在這里。
<?php /** * 無(wú)限級(jí)分類 類 */ class Category{ /** * 返回一維數(shù)組 * @param [type] $cate 要遞歸的數(shù)組 * @param string $html 子級(jí)分類前要顯示的縮進(jìn)符號(hào)。默認(rèn) '─' * @param integer $pid 父級(jí)分類ID。默認(rèn)為 0,表示頂級(jí)分類 * @param integer $level level級(jí),配合 $html 顯示足夠的縮進(jìn)。默認(rèn)為 1,表示頂級(jí)分類 * @return [type] [description] */ static public function unlimitedForLevel($cate, $html = '─', $pid = 0, $level = 1){ $arr = array(); foreach($cate as $v){ if($v['pid'] == $pid){ $v['level'] = $level; $v['html'] = str_repeat($html, $level - 1); $arr[] = $v; $arr = array_merge($arr, $this->unlimitedForLevel($cate, $html, $v['id'], $level + 1)); } } return $arr; } /** * 返回多維數(shù)組 * @param [type] $cate 要遞歸的數(shù)組 * @param string $name 子級(jí)分類在父分類數(shù)組中的 key * @param integer $pid 父級(jí)分類ID。默認(rèn)為0,表示頂級(jí)分類 * @return [type] [description] */ static public function unlimitedForlayer($cate, $name = 'child', $pid = 0){ $arr = array(); foreach($cate as $v){ if( $v['pid'] == $pid){ $v[$name] = self::unlimitedForlayer($cate, $name, $v['id']); $arr[] = $v; } } return $arr; } /** * 傳遞子分類ID返回所有父級(jí)分類 * @param [type] $cate 要遞歸的數(shù)組 * @param [type] $id 子分類ID * @return [type] [description] */ static public function getParents($cate, $id){ $arr = array(); foreach($cate as $v){ if($v['id'] == $id){ $arr[] = $v; $arr = array_merge(self::getParents($cate, $v['pid']), $arr); } } return $arr; } /** * 傳遞父級(jí)分類ID返回所有子分類ID * @param [type] $cate 要遞歸的數(shù)組 * @param [type] $pid 父級(jí)分類ID * @return [type] [description] */ static public function getChildrenId($cate, $pid){ $arr = array(); foreach($cate as $v){ if($v['pid'] == $pid){ $arr[] = $v['id']; $arr = array_merge($arr, self::getChildrenId($cate, $v['id'])); } } return $arr; } /** * 傳遞父級(jí)分類ID返回所有子級(jí)分類 * @param [type] $cate 要遞歸的數(shù)組 * @param [type] $pid 父級(jí)分類ID * @return [type] [description] */ static public function getChildren($cate, $pid){ $arr = array(); foreach($cate as $v){ if($v['pid'] == $pid){ $arr[] = $v; $arr = array_merge($arr, self::getChildren($cate, $v['id'])); } } return $arr; } } ?>