Добавление массивов в многомерный массив в цикле - PullRequest
19 голосов
/ 01 августа 2011

Я пытаюсь сгенерировать многомерный массив, в котором каждый вложенный массив представляет строку, которую я хочу вставить в мою БД.Причина этого в том, что я могу использовать функцию 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);

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

Ответы [ 2 ]

32 голосов
/ 01 августа 2011

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


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

array_push($allplayerdata, $playerdata);

, что эквивалентно добавлению элемента с синтаксисом в квадратных скобках

$allplayerdata[] = $playerdata;

9 голосов
/ 01 августа 2011

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

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