Php 如何等待完成递归循环,然后只回显?

Php 如何等待完成递归循环,然后只回显?,php,Php,代码在回显“gula”之前调用test_loop()函数,因此假定它回显“gula”失败。如何使输出变成如下所示: gula gula gula gula gula 2#3#4#5#6# 更新: 我试图移动echo并返回到else{}语句中,正如@joelhager所建议的那样,结果返回值没有输出 gula 2#3#4#5#6# 功能测试\u循环($x,$y) { 静态$x_值=数组(); $x=$x+1; 如果($x

代码在回显“gula”之前调用test_loop()函数,因此假定它回显“gula”失败。如何使输出变成如下所示:

gula
gula
gula
gula
gula
2#3#4#5#6#
更新: 我试图移动echo并返回到else{}语句中,正如@joelhager所建议的那样,结果返回值没有输出

gula
2#3#4#5#6#
功能测试\u循环($x,$y)
{
静态$x_值=数组();
$x=$x+1;
如果($x<10)
{
$x#u值[]=$x.“#”;//将项目2、3、4插入数组中
}
//如果y不等于3,则再次循环;
$y=$y+1;
如果($y<5)
{
测试_循环($x,$y);
}否则{
回声“古拉”
; 返回$x_值; } }
您应该在对
测试循环的递归调用中添加一个return语句

function test_loop($x, $y)
{
    static $x_values = array(); 
    $x = $x + 1;
    if($x < 10)
    {
         $x_values[] = $x."#"; // insert item 2#,3#,4# into array
    }

    //loop again if y is not = 3;
    $y = $y + 1;
    if($y < 5)
    {
        test_loop($x, $y); 
    }else{
        echo "gula</br>";
        return $x_values; 
    }

}
if($y<5)
{
返回测试循环($x,$y);
}

这样,代码执行返回到test\u循环。

您应该在递归调用
test\u循环时添加一个return语句

function test_loop($x, $y)
{
    static $x_values = array(); 
    $x = $x + 1;
    if($x < 10)
    {
         $x_values[] = $x."#"; // insert item 2#,3#,4# into array
    }

    //loop again if y is not = 3;
    $y = $y + 1;
    if($y < 5)
    {
        test_loop($x, $y); 
    }else{
        echo "gula</br>";
        return $x_values; 
    }

}
if($y<5)
{
返回测试循环($x,$y);
}

这样,代码执行返回到test_loop。

每次调用
test_loop()
时,它都会打印
gula
,因此每添加到数组中的
n
就有一行。每次运行
gula
时,它都会回显,因为它没有包装在任何条件中。它只是选择是推送还是重新运行,但回声出现在函数的每次迭代中。如果您希望它是最终的,您可以在最终输出之前放置一个
else
,并在那里进行回音。因为如果($y<5){test_loop($x,$y);}在它打印gula之前被执行,假设它没有机会打印gula,那么您必须从中返回。添加一个
return
,看看会发生什么。每次调用
test\u loop()
时,它都会打印
gula
,因此添加到数组中的每个
n
都会得到一行。每次运行
gula
时,它都会回显,因为它没有包装在任何条件中。它只是选择是推送还是重新运行,但回声出现在函数的每次迭代中。如果您希望它是最终的,您可以在最终输出之前放置一个
else
,并在那里进行回音。因为如果($y<5){test_loop($x,$y);}在它打印gula之前被执行,假设它没有机会打印gula,那么您必须从中返回。添加一个
返回值
,看看会发生什么。完美。你是救生员。非常感谢,太好了。你是救生员。非常感谢你。
    if($y < 5)
    {
        return test_loop($x, $y); 
    }