Записать в массив результат рекурсивной функции

Есть такая ф-ция:

function someFunction($n = 0){
  if($n <= 3) {
    foreach($item_product as $item){
       $arr[] = $item['name'];
    }
    echo '<pre>'; print_r($arr); echo '</pre>';
    someFunction($n+1);
  }
}

На выходе три раза повторяется массив:

Array
(
    [0] => name1
    [1] => name2
    [2] => name3
)
Array
(
    [0] => name4
    [1] => name5
    [2] => name6
)
Array
(
    [0] => name7
    [1] => name8
    [2] => name9
)

А как бы все это записать в один такой массив:

Array
(
    [0] => name1
    [1] => name2
    [2] => name3
    [3] => name4
    [4] => name5
    [5] => name6
    [6] => name7
    [7] => name8
    [8] => name9
)

Хочу отметить что переменная $n тут не просто так, она очень важна, т.к. подставляется в запрос, который подразумевает использование нумерации страниц, т.е. сначала вытаскиваем все данные со страниц 1,2,3 по очереди, и хотелось бы чтобы на выходе был не постраничный результат, а все в одном массиве.


Ответы (1 шт):

Автор решения: evgen_dev

Вам нужно возвращать результат работы функции и объединять его.

function someFunction($n = 0){

    $result = [];

    //$item_product ???
    $item_product = [
        ['name' => 'name1'],
        ['name' => 'name2'],
        ['name' => 'name3'],
        ['name' => 'name4'],
        ['name' => 'name5'],
    ];

    if($n <= 3) {
        $arr = [];
        foreach($item_product as $item){
            $arr[] = $item['name'];
        }
        $result = array_merge($arr, someFunction($n+1));
    }

    return $result;
}
var_dump(someFunction());
→ Ссылка