php 無限級分類執行個體代碼

來源:互聯網
上載者:User
這裡首先介紹一下,什麼是無限極分類?

無限極分類簡單點說就是一個類可以分成多個子類,然後一個子類又可以分另外多個子類這樣無限分下去,就好象windows可以建立一個檔案夾,然後在這個檔案夾裡又可以建一些個檔案夾,在檔案夾底下還可以建一些檔案夾一樣

下面是執行個體代碼

<?php/** * 無限級分類 類 */class Category{ /**  * 返回一維數組  * @param [type] $cate 要遞迴的數組  * @param string $html 子級分類前要顯示的縮排符號。預設 '─'  * @param integer $pid 父級分類ID。預設為 0,表示頂級分類  * @param integer $level level級,配合 $html 顯示足夠的縮排。預設為 1,表示頂級分類  * @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; } /**  * 返回多維陣列  * @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; }}?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.