Рекурсивная функция php, не возвращающая результат - PullRequest
0 голосов
/ 11 февраля 2011

Вот моя функция:

function loop($id){

        unset($result, $sql, $query);
        $sql = " SELECT parent_id FROM page_entries WHERE id = '$id' ";
        $query = mysql_query ( $sql )or die(mysql_error());
        $result = mysql_fetch_assoc ( $query )or die(mysql_error());
        if ( $result['parent_id'] != 0 ) {
            echo $result['parent_id']."... looping<br>";
            loop($result['parent_id']);
        } else {
            echo $result['parent_id']."... done loop";
            return $result['parent_id'];
        }

    } 

    echo loop('2');

Я повторяю parent_id для тестирования. Вот что выводится в браузер:

1 ... цикл

0 ... готовый цикл

Если я не уверен, что происходит, то echo loop('2') ничего не повторяет из return $result['id'], если я закомментирую строки echo в функции. Я попытался протестировать, изменив значение возврата на return 'foo';, но ничего не вышло.

Есть идеи?

1 Ответ

10 голосов
/ 11 февраля 2011

На первый взгляд, я думаю

loop($result['parent_id']);

должно быть

return loop($result['parent_id']);

в противном случае ваша ветка if ничего не возвращает.

...