PHP树形结构tree类用法示例_第1页
PHP树形结构tree类用法示例_第2页
PHP树形结构tree类用法示例_第3页
PHP树形结构tree类用法示例_第4页
PHP树形结构tree类用法示例_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第PHP树形结构tree类用法示例array('id'=1,'pid'=0,'name'='一级栏目一'),

array('id'=2,'pid'=0,'name'='一级栏目二'),

array('id'=3,'pid'=1,'name'='二级栏目一'),

array('id'=4,'pid'=3,'name'='三级栏目一'),

array('id'=5,'pid'=4,'name'='四级栏目一'),

//转换数据

$tree_data=array();

foreach($dataas$key=$value){

$tree_data[$value['id']]=array(

'id'=$value['id'],

'parentid'=$value['pid'],

'name'=$value['name']

*输出树形结构

$str="tr

tdinputtype='checkbox'name='list[\$id]'value='\$id'/td

td\$id/td

td\$spacer\$name/td

tdahref='add.phpid=\$id'添加/a/td

tdahref='del.phpid=\$id'删除/a/td

tdahref='update.phpid='\$id'修改/a/td

/tr

$tree=newTree();

$tree-init($tree_data);

echo"table

echo$tree-get_tree(0,$str);

echo"/table

echo"br/

echo"br/

echo"br/

echo"br/

*输出下拉列表

$str="optionvalue=\$id\$selected\$spacer\$name/option

$tree=newTree();

$tree-init($tree_data);

echo"select

echo$tree-get_tree(0,$str,2);

echo"/select

运行结果:

tree.class.php:

*通用的树型类,可以生成任何树型结构

classtree{

*生成树型结构所需要的2维数组

*@vararray

public$arr=array();

*生成树型结构所需修饰符号,可以换成图片

*@vararray

public$icon=array('│','├','└');

public$nbsp="";

*@accessprivate

public$ret='';

*构造函数,初始化类

*@paramarray2维数组,例如:

*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'='三级栏目二')

publicfunctioninit($arr=array()){

$this-arr=$arr;

$this-ret='';

returnis_array($arr);

*得到父级数组

*@paramint

*@returnarray

publicfunctionget_parent($myid){

$newarr=array();

if(!isset($this-arr[$myid]))returnfalse;

$pid=$this-arr[$myid]['parentid'];

$pid=$this-arr[$pid]['parentid'];

if(is_array($this-arr)){

foreach($this-arras$id=$a){

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

return$newarr;

*得到子级数组

*@paramint

*@returnarray

publicfunctionget_child($myid){

$a=$newarr=array();

if(is_array($this-arr)){

foreach($this-arras$id=$a){

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

return$newarr$newarr:false;

*得到当前位置数组

*@paramint

*@returnarray

publicfunctionget_pos($myid,$newarr){

$a=array();

if(!isset($this-arr[$myid]))returnfalse;

$newarr[]=$this-arr[$myid];

$pid=$this-arr[$myid]['parentid'];

if(isset($this-arr[$pid])){

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

if(is_array($newarr)){

krsort($newarr);

foreach($newarras$v){

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

return$a;

*得到树型结构

*@paramintID,表示获得这个ID下的所有子级

*@paramstring生成树型结构的基本代码,例如:"optionvalue=\$id\$selected\$spacer\$name/option"

*@paramint被选中的ID,比如在做树型下拉框的时候需要用到

*@returnstring

publicfunctionget_tree($myid,$str,$sid=0,$adds='',$str_group=''){

$number=1;

$child=$this-get_child($myid);

if(is_array($child)){

$total=count($child);

foreach($childas$id=$value){

$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($value);

$parentid==0$str_groupeval("\$nstr=\"$str_group\";"):eval("\$nstr=\"$str\";");

$this-ret.=$nstr;

$nbsp=$this-nbsp;

$this-get_tree($id,$str,$sid,$adds.$k.$nbsp,$str_group);

$number++;

return$this-

*同上一方法类似,但允许多选

publicfunctionget_tree_multi($myid,$str,$sid=0,$adds=''){

$number=1;

$child=$this-get_child($myid);

if(is_array($child)){

$total=count($child);

foreach($childas$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-

*@paraminteger$myid要查询的ID

*@paramstring$str第一种HTML代码方式

*@paramstring$str2第二种HTML代码方式

*@paraminteger$sid默认选中

*@paraminteger$adds前缀

publicfunctionget_tree_category($myid,$str,$str2,$sid=0,$adds=''){

$number=1;

$child=$this-get_child($myid);

if(is_array($child)){

$total=count($child);

foreach($childas$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);

if(empty($html_disabled)){

eval("\$nstr=\"$str\";");

}else{

eval("\$nstr=\"$str2\";");

$this-ret.=$nstr;

$this-get_tree_category($id,$str,$str2,$sid,$adds.$k.'');

$number++;

return$this-

*同上一类方法,jquerytreeview风格,可伸缩样式(需要treeview插件支持)

*@param$myid表示获得这个ID下的所有子级

*@param$effected_id需要生成treeview目录数的id

*@param$str末级样式

*@param$str2目录级别样式

*@param$showlevel直接显示层级数,其余为异步显示,0为全部限制

*@param$style目录样式默认filetree可增加其他样式如'filetreetreeview-famfamfam'

*@param$currentlevel计算当前层级,递归使用适用改函数时不需要用该参数

*@param$recursion递归使用外部调用时为FALSE

functionget_treeview($myid,$effected_id='example',$str="span\$name/span",$str2="span\$name/span",$showlevel=0,$,$currentlevel=1,$recursion=FALSE){

$child=$this-get_child($myid);

if(!defined('EFFECTED_INIT')){

$effected='id="'.$effected_id.'"';

define('EFFECTED_INIT',1);

}else{

$effected='';

$placeholder='ullispan/span/li/ul

if(!$recursion)$this-str.='ul'.$effected.'class="'.$style.'"

foreach($childas$id=$a){

@extract($a);

if($showlevel0$showlevel==$currentlevel$this-get_child($id))$folder='hasChildren';//如设置显示层级模式@2011.07.01

$floder_status=isset($folder)'class="'.$folder.'"':'';

$this-str.=$recursion'ulli'.$floder_status.'id=\''.$id.''':'li'.$floder_status.'id=\''.$id.''

$recursion=FALSE;

if($this-get_child($id)){

eval("\$nstr=\"$str2\";");

$this-str.=$nstr;

if($showlevel==0||($showlevel0$showlevel$currentlevel)){

$this-get_treeview($id,$effected_id,$str,$str2,$showlevel,$style,$currentlevel+1,TRUE);

}elseif($showlevel0$showlevel==$currentlevel){

$this-str.=$placeholder;

}else{

eval("\$nstr=\"$str\";");

$this-str.=$nstr;

$this-str.=$recursion'/li/ul':'/li

if(!$recursion)$this-str.='/ul

return$this-

*获取子栏目json

*Enterdescriptionhere...

*@paramunknown_type$myid

pub

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论