栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP树形结构tree类用法示例

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP树形结构tree类用法示例

本文实例讲述了PHP树形结构tree类用法。分享给大家供大家参考,具体如下:

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 ($data as $key=>$value){
  $tree_data[$value['id']]=array(
    'id'=>$value['id'],
    'parentid'=>$value['pid'],
    'name'=>$value['name']
  );
}

$str="
  
  $id
  $spacer$name
  添加
  删除
  修改
  ";
$tree=new Tree();
$tree->init($tree_data);
echo "";
echo $tree->get_tree(0, $str);
echo "
"; echo "
"; echo "
"; echo "
"; echo "
"; $str=""; $tree=new Tree(); $tree->init($tree_data); echo "";

运行结果:

tree.class.php:

arr = $arr;
    $this->ret = '';
    return is_array($arr);
  }
  
  public function get_parent($myid){
    $newarr = array();
    if(!isset($this->arr[$myid])) return false;
    $pid = $this->arr[$myid]['parentid'];
    $pid = $this->arr[$pid]['parentid'];
    if(is_array($this->arr)){
      foreach($this->arr as $id => $a){
 if($a['parentid'] == $pid) $newarr[$id] = $a;
      }
    }
    return $newarr;
  }
  
  public function get_child($myid){
    $a = $newarr = array();
    if(is_array($this->arr)){
      foreach($this->arr as $id => $a){
 if($a['parentid'] == $myid) $newarr[$id] = $a;
      }
    }
    return $newarr ? $newarr : false;
  }
  
  public function get_pos($myid,&$newarr){
    $a = array();
    if(!isset($this->arr[$myid])) return false;
    $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($newarr as $v){
 $a[$v['id']] = $v;
      }
    }
    return $a;
  }
  
  public 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=>$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_group ? eval("$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->ret;
  }
  
  public 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;
  }
   
  public function get_tree_category($myid, $str, $str2, $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);
 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->ret;
  }
  
  function get_treeview($myid,$effected_id='example',$str="$name", $str2="$name" ,$showlevel = 0 ,$style='filetree ' , $currentlevel = 1,$recursion=FALSE) {
    $child = $this->get_child($myid);
    if(!defined('EFFECTED_INIT')){
      $effected = ' id="'.$effected_id.'"';
      define('EFFECTED_INIT', 1);
    } else {
      $effected = '';
    }
    $placeholder =   '
'; if(!$recursion) $this->str .=''; foreach($child as $id=>$a) { @extract($a); if($showlevel > 0 && $showlevel == $currentlevel && $this->get_child($id)) $folder = 'hasChildren'; //如设置显示层级模式@2011.07.01 $floder_status = isset($folder) ? ' class="'.$folder.'"' : ''; $this->str .= $recursion ? '
    ' : ''; $recursion = FALSE; if($this->get_child($id)){ eval("$nstr = "$str2";"); $this->str .= $nstr; if($showlevel == 0 || ($showlevel > 0 && $showlevel > $currentlevel)) { $this->get_treeview($id, $effected_id, $str, $str2, $showlevel, $style, $currentlevel+1, TRUE); } elseif($showlevel > 0 && $showlevel == $currentlevel) { $this->str .= $placeholder; } } else { eval("$nstr = "$str";"); $this->str .= $nstr; } $this->str .=$recursion ? '
': ''; } if(!$recursion) $this->str .=''; return $this->str; } public function creat_sub_json($myid, $str='') { $sub_cats = $this->get_child($myid); $n = 0; if(is_array($sub_cats)) foreach($sub_cats as $c) { $data[$n]['id'] = iconv(CHARSET,'utf-8',$c['catid']); if($this->get_child($c['catid'])) { $data[$n]['liclass'] = 'hasChildren'; $data[$n]['children'] = array(array('text'=>' ','classes'=>'placeholder')); $data[$n]['classes'] = 'folder'; $data[$n]['text'] = iconv(CHARSET,'utf-8',$c['catname']); } else { if($str) { @extract(array_iconv($c,CHARSET,'utf-8')); eval("$data[$n]['text'] = "$str";"); } else { $data[$n]['text'] = iconv(CHARSET,'utf-8',$c['catname']); } } $n++; } return json_encode($data); } private function have($list,$item){ return(strpos(',,'.$list.',',','.$item.',')); } } ?>

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/39516.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号