在mlm 1x3矩阵中。我们已经创建了一个树结构,计算左,中,右等节点但我们有一个问题来获得节点的级别。如果我们添加一个左子,中间孩子和右孩子,它已成功添加,但我没有得到每个节点的级别....请帮助这个问题。如何在php中获取节点级别。
答案 0 :(得分:0)
当然,我不知道你是如何实现这棵树的,但是我提供了建议。
您可以横向树,直到找到节点(可能很慢),或者,如果您正在使用OOP并且每个节点都是对象,您可以解决为添加属性时添加属性的问题。作为孩子加入。
<?php
class Node
{
private $children = array();
private $level = 0;
private $content;
public function __construct($content, Node $parent = null)
{
$this->content = $content;
if ($parent) {
$parent->children[] = $this;
$this->level = $parent->level + 1;
}
}
public function __get($property)
{
return $this->$property;
}
}
// TEST
$root = new Node('Root');
$a = new Node('A', $root);
$b = new Node('B', $root);
$aa = new Node('AA', $a);
$ab = new Node('AB', $a);
echo $root->content, ' ', $root->level, "\n";
echo $a->content, ' ', $a->level, "\n";
echo $b->content, ' ', $b->level, "\n";
echo $aa->content, ' ', $aa->level, "\n";
echo $ab->content, ' ', $ab->level, "\n";
echo $root->getContent(), ' ', $root->getLevel(), "\n";
echo $a->getContent(), ' ', $a->getLevel(), "\n";
echo $b->getContent(), ' ', $b->getLevel(), "\n";
echo $aa->getContent(), ' ', $aa->getLevel(), "\n";
echo $ab->getContent(), ' ', $ab->getLevel(), "\n";
输出:
Root 0
A 1
B 1
AA 2
AB 2
记住:
声明为私有的成员只能由该类访问 定义成员。
如果对象来自同一个类,则该对象可以访问不同对象的私有属性。