php 無限級分類示例代碼

這里首先介紹一下,什么是無限極分類?

無限極分類簡單點說就是一個類可以分成多個子類,然后一個子類又可以分另外多個子類這樣無限分下去,就好象windows可以新建一個文件夾,然后在這個文件夾里又可以建一些個文件夾,在文件夾底下還可以建一些文件夾一樣

那php又是如何實現它的無限分類的呢?如何把它的各個分類一一列出來呢?代碼如下

<?php /**   * 無限級分類 類   */  class Category{   /**    * 返回一維數組    * @param [type] $cate 要遞歸的數組    * @param string $html 子級分類前要顯示的縮進符號。默認 &#39;─&#39;    * @param integer $pid 父級分類ID。默認為 0,表示頂級分類    * @param integer $level level級,配合 $html 顯示足夠的縮進。默認為 1,表示頂級分類    * @return [type]   [description]    */   static public function unlimitedForLevel($cate, $html = &#39;─&#39;, $pid = 0, $level = 1){    $arr = array();    foreach($cate as $v){     if($v[&#39;pid&#39;] == $pid){      $v[&#39;level&#39;] = $level;      $v[&#39;html&#39;] = str_repeat($html, $level - 1);      $arr[] = $v;      $arr = array_merge($arr, $this->unlimitedForLevel($cate,?$html,?$v['id'],?$level?+?1));  ???}  ??}  ??return?$arr;  ?}  ?/**  ??*?返回多維數組  ??*?@param?[type]?$cate?要遞歸的數組  ??*?@param?string?$name?子級分類在父分類數組中的?key  ??*?@param?integer?$pid?父級分類ID。默認為0,表示頂級分類  ??*?@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返回所有父級分類  ??*?@param?[type]?$cate?要遞歸的數組  ??*?@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;  ?}  ?/**  ??*?傳遞父級分類ID返回所有子分類ID  ??*?@param?[type]?$cate?要遞歸的數組  ??*?@param?[type]?$pid?父級分類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;  ?}  ?/**  ??*?傳遞父級分類ID返回所有子級分類  ??*?@param?[type]?$cate?要遞歸的數組  ??*?@param?[type]?$pid?父級分類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;  ?}  }  ?&gt;

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享