Как добавить элемент в массив на php рекурсивном l oop? - PullRequest
0 голосов
/ 30 апреля 2020
function test_loop($x_values,$x, $y)
{
    $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_values, $x, $y); 
    }

    return $x_values; 
}

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

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

abc();

Вывод:

2#

Как сделать так, чтобы вывод стал:

2#,3#,4#

Ответы [ 3 ]

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

Вы должны использовать функцию array_pu sh (), чтобы добавить элемент в массив

Документация

    if($x < 10)
    {
         array_push($x_values,$x.'#');
    }
0 голосов
/ 30 апреля 2020
if($y < 5)
    {
        test_loop($x_values, $x, $y); 
    }

Вы ничего не делаете с возвращаемым значением рекурсивного вызова функции. Вам нужно добавить массив, возвращенный из test_loop() в существующий массив:

$x_values += test_loop($x_values, $x, $y);

Ваш код теперь печатает: 2#3#4#5#6#

Если вы хотите, чтобы вывод был 2#, 3#, 4#, 5#, 6#, Вы можете использовать функцию implode() вместо al oop:

echo implode (', ', $bababa);
0 голосов
/ 30 апреля 2020

Вы можете использовать пропуск по ссылке:

https://www.php.net/manual/en/language.references.pass.php

Я не слишком внимательно изучил ваш код, возможно, вам потребуется больше изменений, чем это ... но это может сработать:

function test_loop(&$x_values,$x, $y)
{
    $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_values, $x, $y); 
    }

    return $x_values; 
}

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

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

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