首页 > 解决方案 > 如何在不调用递归循环函数的情况下将值传递给变量并返回它?

问题描述

function test_loop($x_values,$x, $y)
{
    $x = $x + 1;
    if($x < 4)
    {
        //I want to add $x value into $x_values variable, eg : $x_values = $x_values . $x;
        //but $x_values = $x_values . $x; is not working, so I force to use $x_values = test_loop($x_values . $x . "##", $x, $y);
        $x_values = test_loop($x_values . $x . "##", $x, $y);
    }

    //loop again if y is not = 3;
    $y = $y + 1;
    if($y < 3)
    {
        echo "kkk" . $y . "<br/>";
        $x_values = test_loop($x_values . $x . "##", $x, $y); 
    }else{
        echo "---------------------<br/>";
    }

    return $x_values; 
}

function abc(){
    $bababa = test_loop(0,1,0);

    echo $bababa;
}

abc();

输出 :

kkk1
kkk2
---------------------
kkk1
kkk2
---------------------
kkk1
kkk2
---------------------
kkk2
---------------------
02##3##4##5##3##4##2##3##4##3##

如何使输出变为:

kkk1
kkk2
---------------------
02##3##

标签: php

解决方案


为什么不尝试创建$x_values一个数组,并将值$x_values作为数组项添加,$x_values[] = $x;然后当你准备好时,只需将这些值implode()到一个字符串中。像这样:

function test_loop($x_values,$x, $y)
{
    $x = $x + 1;
    if($x < 4)
    {
        $x_values[] = $x;
    }

//loop again if y is not = 3;
$y = $y + 1;
if($y < 3)
{
    echo "kkk" . $y . "<br/>";
    $x_values[] = $x;
}else{
    echo "---------------------<br/>";
}

return implode($x_values); 
}

只需确保您$x_values最初也作为数组传递:

function abc(){
    $bababa = test_loop([0],1,0);

    echo $bababa;
}

推荐阅读