Я никогда раньше не использовал рекурсию в PHP, поэтому я новичок в этом - у меня следующая проблема.Функция WordPress должна возвращать идентификатор термина верхнего уровня данного идентификатора дочернего термина - термины могут иметь родителей 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;
}
}
PHP действительно НАХОДИТправильный term_id, но функция всегда возвращает false.
$my_top_level_term = return_top_level_function(423,$tax);
Пример с тремя слоями, неформальная запись:
return_top_level_term(return_top_level_term(return_top_level_term(return 1;)return false;) return false;)
Я ищу 1, но всегда возвращается false, хотяфункция не имеет возвращаемого значения.
Конечно, я мог бы написать локальную переменную над функцией, которая может сохранить значение из-за правил области видимости, но я хочу записать его в библиотеку - есть лиспособ возврата этого значения путем вызова рекурсивной функции?