返回父节点'root'(级别 = 0)



我在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,我必须返回节点本身。

这应该可以解决它:

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。然后,您只需要将 0 更改为 1:

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

最新更新