Рекурсивная функция в PHP - как не вернуть false?

Я никогда раньше не использовал рекурсию в 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, хотя функция не имеет возвращаемого значения.

Конечно, я мог бы написать локальную переменную над функцией, которая может сохранять значение из-за правил области видимости, но я хочу записать ее в библиотеку - есть ли способ вернуть это значение, вызвав рекурсивную функцию?

0
задан Blackbam 24 October 2011 в 20:44
поделиться