明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

php 無限級分類示例代碼

[摘要]這里首先介紹一下,什么是無限極分類?無限極分類簡單點(diǎn)說就是一個(gè)類可以分成多個(gè)子類,然后一個(gè)子類又可以分另外多個(gè)子類這樣無限分下去,就好象windows可以新建一個(gè)文件夾,然后在這個(gè)文件夾里又可以建一...
這里首先介紹一下,什么是無限極分類?

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

那php又是如何實(shí)現(xiàn)它的無限分類的呢?如何把它的各個(gè)分類一一列出來呢?代碼如下

<?php
/**
 * 無限級分類 類
 */
class Category{
 /**
  * 返回一維數(shù)組
  * @param [type] $cate 要遞歸的數(shù)組
  * @param string $html 子級分類前要顯示的縮進(jìn)符號(hào)。默認(rèn) '─'
  * @param integer $pid 父級分類ID。默認(rèn)為 0,表示頂級分類
  * @param integer $level level級,配合 $html 顯示足夠的縮進(jìn)。默認(rèn)為 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;
 }
 /**
  * 返回多維數(shù)組
  * @param [type] $cate 要遞歸的數(shù)組
  * @param string $name 子級分類在父分類數(shù)組中的 key
  * @param integer $pid 父級分類ID。默認(rèn)為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 要遞歸的數(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;
 }
 /**
  * 傳遞父級分類ID返回所有子分類ID
  * @param [type] $cate 要遞歸的數(shù)組
  * @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 要遞歸的數(shù)組
  * @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;
 }
}
?>

以上就是php 無限級分類示例代碼的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。