我有这个递归函数调用自己直到数字达到总数。我做了这个演示来显示工作,实际上是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));
答案 0 :(得分:5)
当您递归调用函数时,必须确保将递归调用的返回值传播回原始调用者:
if($num<$total) {
return secondFunc($total,$num,$array); // return added
}