我之前从未在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,尽管该函数没有返回值.
当然我可以在函数上面写一个局部变量,由于范围规则可以保存值,但是我想把它写入一个库 - 有没有办法通过调用递归函数来返回这个值?
改变这一行
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)
否则最后的结果将不会返回到堆栈的顶部函数,并且返回将无效