dtkyayvldeaqhl7151 2014-01-27 10:47
浏览 131
已采纳

从函数调用递归函数仅返回第一个值

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

  • 写回答

1条回答 默认 最新

  • drkwpgrdb092239314 2014-01-27 10:49
    关注

    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
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?