dtkyayvldeaqhl7151
2014-01-27 10:47 阅读 50
已采纳

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

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 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
    }
    
    点赞 评论 复制链接分享

相关推荐