2

I have this recursive function that calls itself until the number reaches total. I have made this demo to show the working, actually the secondFunc() conatins database queries. I'm saving values in array that is passed to secondFunc() from firstFunc(). The problem is when i call first function it shows only 1 value i.e. 1. When i uncomment the var_dump in second func it shows all the values. I know i'm doing something wrong. Please point out my mistake .What is the problem here?

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

Ace
  • 841
  • 9
  • 23

1 Answers1

6

When you call a function recursively you must make sure to propagate the recursive call's return value back to the original caller:

if($num<$total) {
    return secondFunc($total,$num,$array); // return added
}
Jon
  • 428,835
  • 81
  • 738
  • 806
  • By using return u r giving the value back to function ? – Ace Jan 27 '14 at 10:51
  • `secondFunc(5, 0, $array)` calls `secondFunc(5, 1, $array)` to produce the desired result -- it then has to return that result back to its own caller. That's what the `return` is doing here. – Jon Jan 27 '14 at 10:58