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

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

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; 


?> 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色综合视频在线 | 希岛爱理aⅴ在线中文字幕 午夜综合网 | 四虎影视永久在线精品免费 | 欧美一级视频在线观看 | 免费片在线观看高清 | 久久视频精品3线视频在线观看 | 热久久免费视频 | 日本精a在线观看 | 91在线免费播放 | 欧美图片另类小说综合 | 国产一区二区免费福利片 | 亚洲一二三区久久五月天婷婷 | 亚洲六月丁香婷婷综合 | 欧美色精品天天在线观看视频 | www视频免费看 | 99精品在线免费观看 | 青春草在线观看精品免费视频 | 99国产情在线视频 | 被18号每天强行榨干acg | 千金在线观看 | 免费 视频 | 妹妹你插的我好爽 | 日韩欧美精品一区二区 | 亚洲色图图| 出差被灌醉绝伦的上司日本 | xxxx野外性xxxx | 日本大学jalapsikix | 性吧有你 | 国产欧美一区二区三区免费 | 日韩欧美三级视频 | 修修视频在线观看 | 美女伊人网 | 欧美一级久久久久久久大片 | 好大好粗好爽 | jzz大全部 | 邪恶肉肉全彩色无遮琉璃神社 | 狠狠色成人综合 | 国产资源免费观看 | 四虎国产精品免费久久麻豆 | 好大好爽好舒服视频 | 91香蕉依人综合久久 |