php 無限級分類示例代碼
發(fā)表時(shí)間:2023-07-27 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]這里首先介紹一下,什么是無限極分類?無限極分類簡單點(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í)。