Как передать значение в переменную и вернуть его без вызова рекурсивной функции l oop? - PullRequest
0 голосов
/ 30 апреля 2020
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##

1 Ответ

2 голосов
/ 30 апреля 2020

Почему бы вам не попытаться сделать $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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...