A generic tree class for PHP can generate any tree-type structure
A generic tree class for PHP 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 = ';
The
/**
* Constructor initializes the class
* @param an array of 2-D arrays, for example:
* Array (
* 1 = array (' id ' = ' 1 ', ' ParentID ' =>0, ' name ' = > ' First level Column one '),
* 2 = = Array (' id ' = ' 2 ', ' ParentID ' =>0, ' name ' = ' A ' column two '),
* 3 = = Array (' id ' = ' 3 ', ' ParentID ' =>1, ' name ' = ' two level column one '),
* 4 = = Array (' id ' = ' 4 ', ' ParentID ' =>1, ' name ' = ' two '),
* 5 = = Array (' id ' = ' 5 ', ' ParentID ' =>2, ' name ' = ' Two-level column three '),
* 6 = = Array (' id ' = ' 6 ', ' ParentID ' =>3, ' Name ' + ' three column one '),
* 7 = = Array (' id ' = ' 7 ', ' ParentID ' =>3, ' name ' = ' three column ')
*)
*/
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
* @param int ID, indicating that all children under this ID are obtained
* @param string to generate the basic code for the tree structure, for example: "$spacer $name"
* @param int is selected ID, such as in the Tree drop-down box need to use
* @return String
*/
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/445033.html www.bkjia.com true http://www.bkjia.com/PHPjc/445033.html techarticle PHP Universal Tree class can generate any tree structure PHP universal Tree class can generate any tree structure class trees {/** * The 2-dimensional array required to generate a tree structure * @var array ...