Heim  >  Artikel  >  Backend-Entwicklung  >  php树型类实例_PHP

php树型类实例_PHP

WBOY
WBOYOriginal
2016-05-31 18:15:47835Durchsuche

本文实例讲述了php树型类。分享给大家供大家参考。具体分析如下:

该实例原理简单,学过数据结构的一看就明白是什么道理了,不过今天在使用时数据中出现了子节点id(71)小于父节点id(104).导致部分子节点没被存储入数组,修改了一下,实例代码如下:

代码如下:

class tree
{
    var $data = array();
    var $child = array(-1=>array());
    var $layer = array(-1=>-1);
    var $parent = array();
    var $num = array();
 
    function setnode($id, $parent, $value,$num=0)
    {
        $parent = $parent ? $parent : 0;
 
        $this->data[$id]  = $value;
        $this->num[$id]      = $num;
        if (!isset($this->child[$id])) $this->child[$id] = array();
        $this->child[$parent][] = $id;
        $this->parent[$id]  = $parent;
 
        if (!isset($this->layer[$parent]) && $parent == 0)
        {
           $this->layer[$id] = 0;
        }
        else
        {
            $this->layer[$id] = $this->layer[$parent] + 1;
        }
    }
 
    function getlist(&$tree, $root= 0)
    {
        foreach ($this->child[$root] as $key=>$id)
        {
            $tree[] = $id;
            if($this->child[$id]) $this->getlist($tree, $id);
        }
    }
 
    function getvalue($id)
    {
   if($this->layer[$id]==0)
   {
    return $this->data[$id];
   }
   else
   {
    return $leftmar.$this->data[$id];
   }
    }
 
    function getnum($id)
    {
   return $this->num[$id];
    }
 
    function getbitvalue($id)
    {
   return $this->data[$id];
    }
 
    function getlayer($id, $space = false)
    {
        return $space ? str_repeat($space, $this->layer[$id]) : $this->layer[$id];
    }
 
    function getparent($id)
    {
        return $this->parent[$id];
    }
 
    function getparents($id)
    {
        while ($this->parent[$id] != -1)
        {
            $id = $parent[$this->layer[$id]] = $this->parent[$id];
        }
 
        ksort($parent);
        reset($parent);
 
        return $parent;
    }
 
    function getchild($id)
    {
        return $this->child[$id];
    }
 
    function getchilds($id = 0)
    {
        $child = array($id);
        $this->getlist($child, $id);
 
        return $child;
    }
 
    function printdata()
    {
        return $this->layer;
    }
}
?>

希望本文所述对大家的PHP程序设计有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn