PHP中的递归函数 - 如何不返回false?

Bla*_*bam 0 php wordpress

我之前从未在PHP中使用过递归,所以我对此非常新手 - 我有以下问题.WordPress函数应该返回给定子术语id的顶级术语id - 术语可以有1..n父项,因此递归函数似乎在这里很有用.

// recursive function
function return_top_level_term($term_id,$taxonomy_name) {
    $term = get_term_by('id',$term_id,$taxonomy_name);
    if($term->parent>0) {
        return_top_level_term($term->parent,$taxonomy_name);
    } else {
            // here we get the correct value
        return $term->term_id;
    }
}
Run Code Online (Sandbox Code Playgroud)

PHP确实找到了正确的term_id,但该函数总是返回false.

$my_top_level_term = return_top_level_function(423,$tax);
Run Code Online (Sandbox Code Playgroud)

三层示例,非正式表示法:

return_top_level_term(return_top_level_term(return_top_level_term(return 1;)return false;) return false;)
Run Code Online (Sandbox Code Playgroud)

我正在搜索1,但返回总是false,尽管该函数没有返回值.

当然我可以在函数上面写一个局部变量,由于范围规则可以保存值,但是我想把它写入一个库 - 有没有办法通过调用递归函数来返回这个值?

sha*_*ner 6

改变这一行

        return_top_level_term($term->parent,$taxonomy_name);
Run Code Online (Sandbox Code Playgroud)

return return_top_level_term($term->parent,$taxonomy_name);
Run Code Online (Sandbox Code Playgroud)

否则最后的结果将不会返回到堆栈的顶部函数,并且返回将无效