父节点为'root'的返回节点(level = 0)

时间:2014-02-12 23:42:41

标签: php

我在PHP中有以下代码:

主要是我想从父级别为0的层次结构中获取节点。因为级别为0的节点是根节点。所以,我想找到一个在根之前的那个。

function getBaseParent($node)
{
  if ($node->level == 0) {
    return $node;
  }

  while ($node->getParent()->level !== 0) {
   $node = $node->getParent();
  }
  return $node;
}

这段代码的问题在于它总是返回级别== 0的节点。我想返回父级别为0的节点,但是我在循环中看不到如何做到这一点。

如果传递给函数的节点级别为0,则必须返回节点本身。

2 个答案:

答案 0 :(得分:1)

这应该解决它:

function getBaseParent($node)
{
  if ($node->level == 0) {
    return $node;
  }

  $grabnode = $node;
  while ($node->getParent()->level !== 0) {
    $grabnode = $node;
    $node = getParent($node);
  }
  return $grabnode;
}

这里在循环中,当前节点被保存到循环的下一次迭代。因此,在最后一次迭代中,它将保留根节点之前的最后一个节点。

答案 1 :(得分:0)

期望级别为1的节点具有父级别0.然后您只需将0更改为1:

while ($node->level !== 1) {
    $node = $node->getParent();
}
return $node;