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,拿去用吧!