php树型类实例

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

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

<?php 

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程序设计有所帮助。