如何在PHP中获取mlm 1x3矩阵中的级别?

时间:2018-03-20 04:00:39

标签: php

在mlm 1x3矩阵中。我们已经创建了一个树结构,计算左,中,右等节点但我们有一个问题来获得节点的级别。如果我们添加一个左子,中间孩子和右孩子,它已成功添加,但我没有得到每个节点的级别....请帮助这个问题。如何在php中获取节点级别。

1 个答案:

答案 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

记住:

  

声明为私有的成员只能由该类访问   定义成员。

如果对象来自同一个类,则该对象可以访问不同对象的私有属性。