Подтвердить что ты не робот

Добавление массивов в многомерный массив внутри цикла

Я пытаюсь создать многомерный массив с каждым вспомогательным массивом, представляющим строку, которую я хочу вставить в свою БД. Причина этого заключается в том, что я могу использовать функцию CodeIgniters batch_insert для добавления каждой строки в БД.

Я пытаюсь создать каждый дополнительный массив в цикле и вставить его в многомерный массив. Google предложил использовать array_merge, но после использования 'print_r' в многомерном массиве с приведенным ниже кодом отображается только последний подматрица.

Вот мой код:

$allplayerdata = array(); //M-D container array
for ($i = 1; $i <= 11; $i++)
{
    $playerdata = array(
                        'player_id' => $this->input->post('player' . $i),
                        'goals' => $this->input->post('playergoals' . $i),
                        'player_num' => $i,
                        'fixture_id' => $this->input->post('fixture_id')
                    );

    //Merge each player row into same array to allow for batch insert
    $allplayerdata = array_merge($allplayerdata, $playerdata);
}
print_r($allplayerdata);

Может ли кто-нибудь увидеть, где я ошибаюсь? Помощь приветствуется!

4b9b3361

Ответ 1

Это потому, что array_merge не подходит для этой ситуации. Поскольку все массивы $playerdata имеют одинаковые ключи, значения переопределяются.


Вы хотите использовать array_push для добавления в массив. Таким образом вы получите массив массивов $playerdata.

array_push($allplayerdata, $playerdata);

Что эквивалентно добавлению элемента с синтаксисом квадратной скобки

$allplayerdata[] = $playerdata;

Ответ 2

Это добавит второй массив в первый массив: A merge - это нечто другое.

$allplayerdata[] = $playerdata;