Как ждать fini sh recursive l oop тогда только эхо? - PullRequest
0 голосов
/ 30 апреля 2020
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); 
    }

    echo "gula</br>";
    return $x_values; 
}

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

    foreach($bababa as $fpackage_id)
    {
        echo $fpackage_id;
    }
}

abc();

Вывод:

gula
gula
gula
gula
gula
2#3#4#5#6#

Код вызывает функцию test_l oop () перед выводом "gula", так что, предположительно, он не должен выводить "gula". Как сделать вывод таким, как показано ниже:

gula
2#3#4#5#6#

ОБНОВЛЕНИЕ: Я попытался переместить эхо и вернуться в оператор else {}, как предложил @Joel Hager, в итоге ничего не выводится на возвращаемое значение.

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; 
    }

}

1 Ответ

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

Вы должны добавить оператор возврата для вашего рекурсивного вызова в test_loop

    if($y < 5)
    {
        return test_loop($x, $y); 
    }

Таким образом, выполнение кода возвращается к test_l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...