2014-01-27 2 views
1

У меня есть эта рекурсивная функция, которая вызывает себя до тех пор, пока число не достигнет итогового значения. Я сделал эту демонстрацию, чтобы показать рабочие, на самом деле запросы базы данных secondFunc() conatins. Я сохраняю значения в массиве, который передается secondFunc() из firstFunc(). Проблема в том, что когда я вызываю первую функцию, она показывает только одно значение 1. Если я раскомментирую var_dump во втором func, он отображает все значения. Я знаю, что делаю что-то неправильно. Пожалуйста, укажите мою ошибку. В чем проблема?Вызов рекурсивной функции из функции return only first value

function firstFunc($total){  
    $array=array(); 
    $num=0; 
    return secondFunc($total,$num,$array); 
} 



function secondFunc($total,$num,$array){ 
    $num++; 
    $array[$num]=$num; 
    if($num<$total){ 
    secondFunc($total,$num,$array); 
    } 
    //var_dump($array); 
    //exit(); 
    return $array; 

} 

var_dump(firstFunc(5)); 

Demo http://codepad.viper-7.com/Bic8ce

ответ

5

При вызове функции рекурсивно вы должны убедиться в том, чтобы распространять возвращаемое значение рекурсивного вызова обратно к первоначальному абоненту:

if($num<$total) { 
    return secondFunc($total,$num,$array); // return added 
} 
+0

С помощью возврата Ур дают значение обратно функционировать ? – Ace

+0

'secondFunc (5, 0, $ array)' вызывает 'secondFunc (5, 1, $ array)' для получения желаемого результата - тогда он должен вернуть этот результат обратно своему собственному вызывающему. Вот что здесь делает 'return'. – Jon

 Смежные вопросы

  • Нет связанных вопросов^_^