Home  >  Article  >  Backend Development  >  PHP general tree class can generate any tree structure_PHP tutorial

PHP general tree class can generate any tree structure_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:06:201225browse

php general tree class can generate any tree structure

php general tree class can generate any tree structure
class tree
{
/**
* 2-dimensional array required to generate tree structure
* @var array
*/
var $arr = array();

/**
* Modification symbols required to generate a tree structure, which can be replaced by images
* @var array
*/
var $icon = array('│','├','└');

/**
 * @access private
 */
var $ret = '';

/**
* Constructor, initialize class
* @param array 2-dimensional array, for example:
* array(
* 1 => array('id'=>'1','parentid '=>0,'name'=>'First-level column one'),
* 2 => array('id'=>'2','parentid'=>0,'name '=>'First-level column two'),
* 3 => array('id'=>'3','parentid'=>1,'name'=>'Second-level column 1'),
* 4 => array('id'=>'4','parentid'=>1,'name'=>'Second-level column two'),
* 5 => array('id'=>'5','parentid'=>2,'name'=>'Second-level column three'),
* 6 => array('id '=>'6','parentid'=>3,'name'=>'Third-level column one'),
* 7 => array('id'=>'7', 'parentid'=>3,'name'=>'Third-level column two')
* )
*/
function tree($arr=array())
{
$this->arr = $arr;
$this->ret = '';
return is_array($arr);
}

/**
* Get the parent array
* @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 the child array
* @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 the tree structure
* @param int ID, which means to get all the children under this ID
* @param string The basic code to generate the tree structure, for example: ""
* @param int The selected ID, such as when making a tree drop-down box.
* @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 have($list,$item){
  return(strpos(',,'.$list.',',','.$item.','));
 }
}


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445033.htmlTechArticlephp 通用的树型类 可以生成任何树型结构 php 通用的树型类 可以生成任何树型结构 class tree { /** * 生成树型结构所需要的2维数组 * @var array...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn