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