無限極分類php實現—查子孫樹、家譜樹


1、本文更新日期:2018/05/20 , 親測可用,在原有基礎上進行增強和 詳細化 。

2、面包屑導航 和 子孫樹 效果圖如下:

 

3、代碼:

<?php 
// 無限級分類中,查家譜樹(面包屑導航) ++ 子孫樹(無限極分類)   
 
$area = array(  
0=>array('id'=>1,'cat_name'=>'北京市','pid'=>0),  
1=>array('id'=>2,'cat_name'=>'館陶縣','pid'=>3),  
2=>array('id'=>3,'cat_name'=>'海淀區','pid'=>1),  
3=>array('id'=>4,'cat_name'=>'朝陽區','pid'=>1),   
);  
 
function fatherTree($arr,$id) {  
        static $Tree = array();  
        foreach($arr as $k=>$v) {   
            if($v['id'] == $id) {  
                $Tree[] = $v;
                fatherTree($arr,$v['pid']);  
                            
            }  
        } 
        return $Tree;  
    } 
  
$list = fatherTree($area,2);
$list2 = $list;
//構成面包屑  如: 北京市 > 海淀區 > 館陶縣    ---- >>>>  (不帶跳轉鏈接)
krsort($list2);//下標倒序排列  
foreach($list2 as $v ){
    $list_arr[] = $v['cat_name'];   //僅含分類名稱cat_name的一維數組
}
$url = implode(" > ",$list_arr);
echo "<pre>";
var_dump($url); 

//構成面包屑  如: 北京市 > 海淀區 > 館陶縣    ---- >>>>  (帶跳轉標簽<a>支持跳轉)
function displayCatePath($data,$id, $url='index.php?id=') {
    $res = fatherTree($data,$id);
    krsort($res);//下標倒序排列
    $str = '';
    foreach($res as $k=>$val) {
        $str .= "<a href='{$url}{$val['id']}'>{$val['cat_name']}</a>>";
    }
    return $str;
}
echo displayCatePath($area,10, 'cate.php?page=1&id=');



echo "<br>";

// 無限級分類中,查找子孫樹  
function sonTree($arr,$pid = 0,$lev=1) {  
    static $Tree = array();  
    foreach($arr as $k=>$v) {  
        if($v['pid'] == $pid) {  
            if(!isset($v['lev'])) $v['lev']='';
            $v['lev'] = $lev;  
            $Tree[] = $v;  
            sonTree($arr,$v['id'],$lev+1);  
        }  
    }  
    return $Tree;  
}  
  
$list = sonTree($area,0,1);  
foreach($list as $k=>$v) {  
    echo str_repeat('_+',$v['lev']-1),$v['cat_name'],'<br />';  
}  
  
?>

 

 

4、over,拿去用吧!

 


免責聲明!

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



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