我有一个函数,并且根据某些值,它需要再次使用不同的值执行。这是一个例子:
function loop_again($num) {
if (isset($num)) {
if ($num == 1) {
loop_again(2);
}
return $num.'<br />';
}
}
echo loop_again(1);
我想要的结果是:
1
2
但我只是1
。
如何重新运行该功能并按顺序返回两个结果?
答案 0 :(得分:4)
你的第二个循环正在消失在以太中,因为你没有对返回值做任何事情。您希望将return
更改为回显或将递归附加到要返回的字符串。
function loop_again($num) {
$number_string = '';
if (isset($num)) {
$number_string .= $num.'<br />';
if ($num == 1) {
$number_string .= loop_again(2);
}
return $number_string;
}
}
echo loop_again(1);
答案 1 :(得分:1)
您必须实际捕获并保留函数内递归调用的返回值:
function loop_again($num) {
if (isset($num)) {
if ($num == 1) {
$num = $num.'<br/>'.loop_again(2); //changed here
}
return $num.'<br />';
}
}
echo loop_again(1);
答案 2 :(得分:0)
总的来说,这似乎是编写函数的一种非常奇怪的方式。一种可能更好的方法是在同一个函数中构建所有数据的数组并返回它。
否则,如果必须使用递归传递定义到函数中的数据。
function loop_again($level=1,$data=array()) {
// append data to $data, and pass the args $level and $data into each recursive call
}