我在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;