php树型类实例
本文实例讲述了php树型类。分享给大家供大家参考。具体分析如下:
该实例原理简单,学过数据结构的一看就明白是什么道理了,不过今天在使用时数据中出现了子节点id(71)小于父节点id(104).导致部分子节点没被存储入数组,修改了一下,实例代码如下:
<?php classtree { var$data=array(); var$child=array(-1=>array()); var$layer=array(-1=>-1); var$parent=array(); var$num=array(); functionsetnode($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; } } functiongetlist(&$tree,$root=0) { foreach($this->child[$root]as$key=>$id) { $tree[]=$id; if($this->child[$id])$this->getlist($tree,$id); } } functiongetvalue($id) { if($this->layer[$id]==0) { return$this->data[$id]; } else { return$leftmar.$this->data[$id]; } } functiongetnum($id) { return$this->num[$id]; } functiongetbitvalue($id) { return$this->data[$id]; } functiongetlayer($id,$space=false) { return$space?str_repeat($space,$this->layer[$id]):$this->layer[$id]; } functiongetparent($id) { return$this->parent[$id]; } functiongetparents($id) { while($this->parent[$id]!=-1) { $id=$parent[$this->layer[$id]]=$this->parent[$id]; } ksort($parent); reset($parent); return$parent; } functiongetchild($id) { return$this->child[$id]; } functiongetchilds($id=0) { $child=array($id); $this->getlist($child,$id); return$child; } functionprintdata() { return$this->layer; } } ?>
希望本文所述对大家的PHP程序设计有所帮助。