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

时间:2014-01-27 10:47:55

标签: php recursion

我有这个递归函数调用自己直到数字达到总数。我做了这个演示来显示工作,实际上是secondFunc()conatins数据库查询。我正在从firstFunc()传递给secondFunc()的数组中保存值。问题是,当我调用第一个函数时,它只显示1个值,即1.当我在第二个函数中取消注释var_dump时,它显示所有值。我知道我做错了什么。请指出我的错误。这里的问题是什么?

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));

演示http://codepad.viper-7.com/Bic8ce

1 个答案:

答案 0 :(得分:5)

当您递归调用函数时,必须确保将递归调用的返回值传播回原始调用者:

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