Copy CodeThe code is as follows:
/**
* Generic tree class, which can generate any tree-type structure
*/
Class Tree
{
/**
* 2-dimensional array required to generate the tree structure
* @var Array
*/
var $arr = array ();
/**
* Create a tree structure with the necessary decoration symbols, can be converted to pictures
* @var Array
*/
var $icon = array (' │ ', ' ├ ', ' └ ');
/**
* @access Private
*/
var $ret = ';
/**
* Constructors, initializing classes
* @param array of 2-D arrays, for example:
* Array (
* 1 = = Array (' id ' = ' 1 ', ' ParentID ' =>0, ' name ' = ' first column one '),
* 2 = = Array (' id ' = ' 2 ', ' ParentID ' =>0, ' name ' = ' "one column II '),
* 3 = = Array (' id ' = ' 3 ', ' ParentID ' =>1, ' name ' = ' two ' column one '),
* 4 = = Array (' id ' = ' 4 ', ' ParentID ' =>1, ' name ' = ' two ' column two '),
* 5 = = Array (' id ' = ' 5 ', ' ParentID ' =>2, ' name ' = ' two ' column three '),
* 6 = = Array (' id ' = ' 6 ', ' ParentID ' =>3, ' name ' = ' three ' column one '),
* 7 = = Array (' id ' = ' 7 ', ' ParentID ' =>3, ' name ' = ' three ' level Column II ')
* )
*/
function tree ($arr =array ())
{
$this->arr = $arr;
$this->ret = ";
Return Is_array ($arr);
}
/**
* Get Parent Series Group
* @param int
* @return Array
*/
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;
}
/**
* Get sub-series group
* @param int
* @return Array
*/
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;
}
/**
* Get the current position array
* @param int
* @return Array
*/
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;
}
/**
* -------------------------------------
* Get tree-type structure
* -------------------------------------
* @author Midnight (Yang Yunzhou), yangyunzhou@foxmail.com
* @param $myid means to get all the children under this ID
* @param $str generate the basic code of the tree structure, for example: " \ $spacer \ $name"
* @param $sid The selected ID, such as in the Tree drop-down box need to use
* @param $adds
* @param $str _group
* @return Unknown_type
*/
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 = $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 = $id = = $sid? ' Selected ': ';
@extract ($a);
$parentid = = 0 && $str _group? Eval ("\ $nstr = \" $str _group\ "): eval (" \ $nstr = \ "$str \"; ");
$this->ret. = $nstr;
$this->get_tree ($id, $str, $sid, $adds. $k. ", $str _group);
$number + +;
}
}
return $this->ret;
}
/**
* Similar to the previous method, but allows multiple selections
*/
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 ': ';
echo $sid. ' = '. $id. ': ' $selected. '.
';
@extract ($a);
Eval ("\ $nstr = \" $str \ ";");
$this->ret. = $nstr;
$this->get_tree_multi ($id, $str, $sid, $adds. $k. ");
$number + +;
}
}
return $this->ret;
}
function has ($list, $item) {
Return (Strpos (',, '. $list. ', ', ', '. $item. ', '));
}
}
?>
http://www.bkjia.com/PHPjc/327686.html www.bkjia.com true http://www.bkjia.com/PHPjc/327686.html techarticle Copy the code as follows: PHP/** * Generic tree class, you can generate any tree structure */class Tree {/** * Generate a tree structure required by the 2-dimensional array * @var array */var $arr = ...