Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2009, 16:26   #1
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию Рекурсия - не срабатывает return

Вот есть такая функция, если rand с первого раза попадает в 0, т.е. мы сразу попадаем в else, то тогда return "assadfasdf" нормально срабатывает. Если же началась рекурсия, то при попадании на return результат пуст.
В общем приведу пример, будет понятнее.
PHP код:
<?php
function get_id_by_level(){
    static 
$ids = array();
    
$parent_id rand(0,5); 
    
$ids[] = $parent_id;
    
print_r($ids);
    if(
$parent_id != 0){
        echo 
"before call <br>";
        
get_id_by_level();
    }else{
        echo 
"return";
        return 
"assadfasdf";
    }
}
?>
<?php $result 
get_id_by_level(); echo $result?>
Array ( [0] => 2 ) before call
Array ( [0] => 2 [1] => 4 ) before call
Array ( [0] => 2 [1] => 4 [2] => 2 ) before call
Array ( [0] => 2 [1] => 4 [2] => 2 [3] => 0 ) return
вот видите, пустой результат.

Array ( [0] => 0 ) returnassadfasdf
а здесь с первого раза попали в нуль и результат не пустой!

Почему пустой результат в первом случае? Где ошибка?
iankov вне форума Ответить с цитированием
Старый 24.02.2009, 16:28   #2
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

9 строка
PHP код:
<?php
function get_id_by_level($current_id){
    static 
$ids = array();
    
$parent_id rand(0,5); 
    
$ids[] = $parent_id;
    
print_r($ids);
    if(
$parent_id != 0){
        echo 
"before call <br>";
        return 
get_id_by_level($parent_id);
    }else{
        echo 
"return";
        return 
"assadfasdf";
    }
}
?>
<?php $result 
get_id_by_level(4); echo $result?>
свободен...
wall66 вне форума Ответить с цитированием
Старый 24.02.2009, 16:31   #3
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

аааа, вот в чем причина.
Спасибо, а то я уже в недоумении сидел =)
iankov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не срабатывает программное нажатие кнопки в чужом окне alxsev Общие вопросы Delphi 3 29.01.2009 20:32
PopUpMenu не срабатывает OnDrawItem Comer_Jus Общие вопросы Delphi 6 16.05.2008 21:48
Не срабатывает TEmbeddedWB когда открываю страницу через ссылку в новой вкладке dimfil Общие вопросы Delphi 0 23.03.2008 23:45
ошибка CommandText does not return a result set furstenberg БД в Delphi 2 04.02.2008 17:38