一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP無限分類代碼,支持數組格式化、直接輸出菜單兩種方式

PHP無限分類代碼,支持數組格式化、直接輸出菜單兩種方式

2019-11-25 13:57PHP教程網 PHP教程

一朋友寫的PHP無限分類代碼,分享給大家,支持數組格式化、直接輸出菜單兩種方式

代碼如下:


<?php 
/** 
+------------------------------------------------ 
* 通用的樹型類 
+------------------------------------------------ 
* @author [email protected] 
+------------------------------------------------ 
* @date 2010年11月23日10:09:31 
+------------------------------------------------ 
*/ 
class Tree 


/** 
+------------------------------------------------ 
* 生成樹型結構所需要的2維數組 
+------------------------------------------------ 
* @author [email protected] 
+------------------------------------------------ 
* @var Array 
*/ 
var $arr = array(); 

/** 
+------------------------------------------------ 
* 生成樹型結構所需修飾符號,可以換成圖片 
+------------------------------------------------ 
* @author [email protected] 
+------------------------------------------------ 
* @var Array 
*/ 
var $icon = array('│','├',' └'); 

/** 
* @access private 
*/ 
var $ret = ''; 

/** 
* 構造函數,初始化類 
* @param array 2維數組,例如: 
* array( 
* 1 => array('id'=>'1','parentid'=>0,'name'=>'一級欄目一'), 
* 2 => array('id'=>'2','parentid'=>0,'name'=>'一級欄目二'), 
* 3 => array('id'=>'3','parentid'=>1,'name'=>'二級欄目一'), 
* 4 => array('id'=>'4','parentid'=>1,'name'=>'二級欄目二'), 
* 5 => array('id'=>'5','parentid'=>2,'name'=>'二級欄目三'), 
* 6 => array('id'=>'6','parentid'=>3,'name'=>'三級欄目一'), 
* 7 => array('id'=>'7','parentid'=>3,'name'=>'三級欄目二') 
* ) 
*/ 
function tree($arr=array()) 

$this->arr = $arr; 
$this->ret = ''; 
return is_array($arr); 


/** 
* 得到父級數組 
* @param int 
* @return array 
*/ 
function get_parent($myid) 

$newarr = array(); 
if(!isset($this->arr[$myid])) return false; 
$pid = $this->arr[$myid]['pid']; 
$pid = $this->arr[$pid]['pid']; 
if(is_array($this->arr)) 

foreach($this->arr as $id => $a) 

if($a['pid'] == $pid) $newarr[$id] = $a; 


return $newarr; 


/** 
* 得到子級數組 
* @param int 
* @return array 
*/ 
function get_child($myid) 

$a = $newarr = array(); 
if(is_array($this->arr)) 

foreach($this->arr as $id => $a) 

if($a['pid'] == $myid) $newarr[$id] = $a; 


return $newarr ? $newarr : false; 


/** 
* 得到當前位置數組 
* @param int 
* @return array 
*/ 
function get_pos($myid,&$newarr) 

$a = array(); 
if(!isset($this->arr[$myid])) return false; 
$newarr[] = $this->arr[$myid]; 
$pid = $this->arr[$myid]['pid']; 
if(isset($this->arr[$pid])) 

$this->get_pos($pid,$newarr); 

if(is_array($newarr)) 

krsort($newarr); 
foreach($newarr as $v) 

$a[$v['id']] = $v; 


return $a; 


/** 
* ------------------------------------- 
* 得到樹型結構 
* ------------------------------------- 
* @author [email protected] 
* @param $myid 表示獲得這個ID下的所有子級 
* @param $str 生成樹形結構基本代碼, 例如: "<option value=\$id \$select>\$spacer\$name</option>" 
* @param $sid 被選中的ID, 比如在做樹形下拉框的時候需要用到 
* @param $adds 
* @param $str_group 
*/ 
function get_tree($myid, $str, $sid = 0, $adds = '', $str_group = '') 

$number=1; 
$child = $this->get_child($myid); 
if(is_array($child)) { 
$total = count($child); 
foreach($child as $id=>$a) { 
$j=$k=''; 
if($number==$total) { 
$j .= $this->icon[2]; 
} else { 
$j .= $this->icon[1]; 
$k = $adds ? $this->icon[0] : ''; 

$spacer = $adds ? $adds.$j : ''; 
$selected = $id==$sid ? 'selected' : ''; 
@extract($a); 
$parentid == 0 && $str_group ? eval("\$nstr = \"$str_group\";") : eval("\$nstr = \"$str\";"); 
$this->ret .= $nstr; 
$this->get_tree($id, $str, $sid, $adds.$k.' ',$str_group); 
$number++; 


return $this->ret; 


/** 
* 同上一方法類似,但允許多選 
*/ 
function get_tree_multi($myid, $str, $sid = 0, $adds = '') 

$number=1; 
$child = $this->get_child($myid); 
if(is_array($child)) 

$total = count($child); 
foreach($child as $id=>$a) 

$j=$k=''; 
if($number==$total) 

$j .= $this->icon[2]; 

else 

$j .= $this->icon[1]; 
$k = $adds ? $this->icon[0] : ''; 

$spacer = $adds ? $adds.$j : ''; 

$selected = $this->have($sid,$id) ? 'selected' : ''; 
@extract($a); 
eval("\$nstr = \"$str\";"); 
$this->ret .= $nstr; 
$this->get_tree_multi($id, $str, $sid, $adds.$k.' '); 
$number++; 


return $this->ret; 


function have($list,$item){ 
return(strpos(',,'.$list.',',','.$item.',')); 


/** 
+------------------------------------------------ 
* 格式化數組 
+------------------------------------------------ 
* @author [email protected] 
+------------------------------------------------ 
*/ 
function getArray($myid=0, $sid=0, $adds='') 

$number=1; 
$child = $this->get_child($myid); 
if(is_array($child)) { 
$total = count($child); 
foreach($child as $id=>$a) { 
$j=$k=''; 
if($number==$total) { 
$j .= $this->icon[2]; 
} else { 
$j .= $this->icon[1]; 
$k = $adds ? $this->icon[0] : ''; 

$spacer = $adds ? $adds.$j : ''; 
@extract($a); 
$a['title'] = $spacer.' '.$a['title']; 
$this->ret[$a['id']] = $a; 
$fd = $adds.$k.' '; 
$this->getArray($id, $sid, $fd); 
$number++; 



return $this->ret; 


?> 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 海角社区在线登录 | 日韩欧美亚洲每日更新网 | xx18美女美国| 四虎成人免费大片在线 | 久久黄色小视频 | 日韩 欧美 国产 亚洲 中文 | jazz中国女人护士 | 高清黄色直接看 | 69成人影院 | bt天堂在线最新版在线 | 国产美女在线一区二区三区 | 国产91素人搭讪系列天堂 | 午夜国产精品福利在线观看 | 国产麻豆精品原创 | 激情艳妇 | 国产亚洲精aa在线观看不卡 | 国产一级片免费视频 | aⅴ视频在线免播放观看 | 久久影院中文字幕 | 免费视频片在线观看大片 | 国产成人精品一区二区不卡 | 特黄未满14周岁毛片 | 午夜尤物 | 国产一区二区在线看 | 亚洲va久久久噜噜噜久久狠狠 | xxxx意大利xxxxhd| 女同学用白丝脚玩我的故事 | 亚洲人成网站在线观看妞妞网 | 福利片免费一区二区三区 | 欧美精品1区2区 | 国产免费色视频 | 五月最新商场女厕所高跟嘘嘘 | 亚洲国产成人资源在线桃色 | 亚洲精品一 | 91影视永久福利免费观看 | 四虎影院新地址 | 日本中文字幕二区三区 | 国产视频一区二 | 亚洲福利天堂网福利在线观看 | 97香蕉超级碰碰碰久久兔费 | 国产精品不卡高清在线观看 |