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.','));  } } ?>
相關文章
相關標籤/搜索