我无法从班级方法中返回值,有人能解释我做错了什么吗?
这是名为Tree的类的一部分:
public function findNode($id, $node = NULL){
if($node == NULL) $node = $this->root;
if($node->tid == $id){
return $node;
}
else{
foreach ($node->children as $child) {
$this->findNode($id, $child);
}
}
}
`
然后我称之为
$tree = new Tree($t);
$a = $tree->findNode(55);
调试它我看到$ node在返回之前有一个值,但$ a总是为空(在正常的过程代码中,这在类范围之外调用)
任何人都可以给我一些指示吗?
由于
编辑: 这是返回之前$ node的内容,以及我期望在$ a中看到的内容:
(Object) Node
parentNode (Object) Node
text (String, 14 characters ) retransmission
depth (Integer) 3
children (Array, 0 elements)
tid (String, 2 characters ) 55
答案 0 :(得分:0)
当它以递归方式调用函数时,它将返回到foreach块,它将恢复其操作。
尝试捕获foreach中的节点,并在继续之前检查它是否为null。