




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一原电池课件
- 离婚协议书(房产过户与装修费用承担协议)
- 创新离婚协议书范本:兼顾双方利益与子女成长
- 离婚户口迁移协议及共同财产分割与子女教育合同
- 信息技术设备租赁合同提前终止及数据安全协议
- 离婚争议精神损害赔偿金额确定合同范本
- 离婚时财产分割、子女监护权及子女共同生活协议
- 小区安全防范措施规范
- 发动机安全运行规程
- 如何提高线下店铺的吸引力
- 培训部数据安全事项课件
- 保密观考试题及答案2025保密观知识竞赛试题及答案
- 保安部安全培训教学课件
- 老年综合征与护理试题及答案
- 3.2《参与民主生活》教案 2025-2026学年度道德与法治九年级上册 统编版
- 研发投入工时管理办法
- 道路升降柱安装合同范本
- 社团招新课件
- 003-04-PFMEA第五版表格模板-(带实例)-2020.2.3
- MBR系统运行技术手册
- 防渗漏、开裂监理实施细则
评论
0/150
提交评论