php 无限分类[加强版] php100

<?php
/**
 +------------------------------------------------
 * 通用的树型类
 +------------------------------------------------
 * @author yangyunzhou@foxmail.com
 +------------------------------------------------
 * @date 2010年11月23日10:09:31
 +------------------------------------------------
 */
class Tree
{
 /**
  +------------------------------------------------
  * 生成树型结构所须要的2维数组
  +------------------------------------------------
  * @author yangyunzhou@foxmail.com
  +------------------------------------------------
  * @var Array
  */
 var $arr = array();
 /**
  +------------------------------------------------
  * 生成树型结构所需修饰符号,能够换成图片
  +------------------------------------------------
  * @author yangyunzhou@foxmail.com
  +------------------------------------------------
  * @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())
 {
       arr;
    $this->ret = '';
    return is_array($arr);
 }
    /**
 * 获得父级数组
 * @param int
 * @return array
 */
 function get_parent(newarr = array();
  if(!isset(myid])) return false;
  this->arr[pid = pid]['parentid'];
  if(is_array($this->arr))
  {
   foreach(id => $a)
   {
    if(pid) id] = $a;
   }
  }
  return $newarr;
 }
    /**
 * 获得子级数组
 * @param int
 * @return array
 */
 function get_child(a = this->arr))
  {
   foreach(id => $a)
   {
    if(myid) id] = $a;
   }
  }
  return newarr : false;
 }
    /**
 * 获得当前位置数组
 * @param int
 * @return array
 */
 function get_pos(newarr)
 {
  this->arr[$myid])) return false;
        this->arr[pid = myid]['parentid'];
  if(isset(pid]))
  {
      pid,$newarr);
  }
  if(is_array($newarr))
  {
   krsort(newarr as $v)
   {
    v['id']] = $v;
   }
  }
  return $a;
 }

 /**
  * -------------------------------------
  *  获得树型结构
  * -------------------------------------
  * @author yangyunzhou@foxmail.com
  * @param $myid 表示得到这个ID下的全部子级
  * @param $str 生成树形结构基本代码, 例如: "<option value=\select>\name</option>"
  * @param $sid 被选中的ID, 好比在作树形下拉框的时候须要用到
  * @param str_group
  * @return unknown_type
  */
 function get_tree(str, adds = '', number=1;
  this->get_child(child)) {
      child);
   foreach(id=>a);
    k='';
    if(total) {
     this->icon[2];
    } else {
     this->icon[1];
     adds ? $this->icon[0] : '';
    }
    adds ? j : '';
    id==$sid ? 'selected' : '';
    @extract(parentid == 0 && nstr = \"nstr = \"this->ret .= this->get_tree(str, adds.str_group);
    $number++;
   }
  }
  return $this->ret;
 }

 /**
  +------------------------------------------------
  * 格式化数组
  +------------------------------------------------
  * @author yangyunzhou@foxmail.com
  +------------------------------------------------
  */
 function getArray(sid=0, number=1;
  this->get_child(child)) {
      child);
   foreach(id=>j=number==j .= $this->icon[2];
    } else {
     this->icon[1];
     adds ? $this->icon[0] : '';
    }
    adds ? j : '';
    @extract(a['name'] = a['name'];
    a['id']] = fd = k.'&nbsp;';
    id, fd);
    $number++;
   }
  }
  return $this->ret;
 }

    /**
 * 同上一方法相似,但容许多选
 */
 function get_tree_multi(str, adds = '')
 {
  child = myid);
  if(is_array($child))
  {
      child);
   foreach(id=>$a)
   {
    k='';
    if(total)
    {
     this->icon[2];
    }
    else
    {
     this->icon[1];
     adds ? $this->icon[0] : '';
    }
    adds ? j : '';
    this->have(id) ? 'selected' : '';
    //echo id.' : '.$selected.' . <br/>';
    @extract(nstr = \"this->ret .= this->get_tree_multi(str, adds.number++;
   }
  }
  return $this->ret;
 }
 function have(item){   return(strpos(',,'.item.','));  } } ?>
相关文章
相关标签/搜索