php無限極分類


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

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

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

首先,我們來假設有這樣一個數組

$arr = array(
    0=>array(
        'cid'=>1,
        'pid'=>0,
        'name'=>'亞洲',
    ),
    1=>array(
        'cid'=>2,
        'pid'=>0,
        'name'=>'北美洲',
    ),
    2=>array(
        'cid'=>3,
        'pid'=>1,
        'name'=>'中國',
    ),
    3=>array(
        'cid'=>4,
        'pid'=>2,
        'name'=>'美國',
    ),
    4=>array(
        'cid'=>5,
        'pid'=>3,
        'name'=>'北京',
    ),
    5=>array(
        'cid'=>6,
        'pid'=>3,
        'name'=>'河北',
    ),
    6=>array(
        'cid'=>7,
        'pid'=>5,
        'name'=>'東城區',
    ),
    7=>array(
        'cid'=>8,
        'pid'=>5,
        'name'=>'海淀區',
    ),
);

我們這里需要一個類似這樣的展示效果如圖

如果我們要想將這個數組如上圖般很直觀的表現出來的話就需要用php的遞歸來實現,那么怎么實現呢?看下面的核心代碼

private function GetTree($arr,$pid,$step){
    global $tree;
    foreach($arr as $key=>$val) {
        if($val['pid'] == $pid) {
            $flg = str_repeat('└―',$step);
            $val['name'] = $flg.$val['name'];
            $tree[] = $val;
            $this->GetTree($arr , $val['cid'] ,$step+1);
        }
    }
    return $tree;
}

然后我們只需要寫一個調用的代碼就好

$newarr = $this->GetTree($arr, 0, 0);

這樣看上去是不是很簡單?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM