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