web-dev-qa-db-fra.com

Ajout de tableaux à un tableau multidimensionnel dans une boucle

J'essaie de générer un tableau multidimensionnel avec chaque sous-tableau représentant une ligne que je veux insérer dans ma base de données. La raison en est que je peux utiliser la fonction batch_insert de CodeIgniters pour ajouter chaque ligne à la base de données.

J'essaie de créer chaque sous-tableau dans une boucle et de l'insérer dans un tableau multidimensionnel. Google a suggéré d'utiliser array_merge, mais après avoir utilisé 'print_r' sur le tableau multidimensionnel avec le code ci-dessous, seul le dernier sous-tableau est affiché.

Voici mon code:

$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);

Quelqu'un peut-il repérer où je me trompe? L'aide est appréciée!

19
Leopold Stotch

Ceci est dû au fait array_merge n'est pas la bonne opération pour cette situation. Puisque tous les $playerdata les tableaux ont les mêmes clés, les valeurs sont remplacées.


Vous souhaitez utiliser array_Push à ajouter à un tableau. De cette façon, vous obtiendrez un tableau de $playerdata tableaux.

array_Push($allplayerdata, $playerdata);

Ce qui équivaut à ajouter un élément avec la syntaxe entre crochets

$allplayerdata[] = $playerdata;

33
Mark Biesheuvel