2010-10-18 5 views
0

Je suis en boucle dans un tableau, et pour chaque valeur, j'ai besoin d'insérer un autre tableau contenant quelques éléments. Le code ci-dessous insère le tableau fin:Itérer à travers un tableau PHP et insérer un autre tableau sans l'écraser

foreach($events as $Key => $val): 

    $schedule[$Key] = array( 
          array('event_id' => 'test', 
           'start_date_time' => 'test', 
           'end_date_time'=>'test'),)); 
endforeach; 

Et cela me donne quelque chose comme ci-dessous:

Array 
(
    [1287039600] => 
    [1287043200] => 
    [1287050400] => 
    [1287054000] => 
    [1287054900] => 
    [1287057600] => 
    [1287061200] => 
    [1287064800] => Array 
     (
      [0] => Array 
       (
        [event_id] => 'test' 
        [start_date_time] => 'test' 
        [end_date_time] => 'test' 
       ) 

     ) 

    [1287068400] => 
    [1287072000] => 
    [1287075600] => 
) 

Mon problème est que je dois insérer plus d'un tableau pour chaque touche, et si i Pour ce faire, je remplace l'entrée précédente.

Je pense que j'ai besoin d'incrémenter la valeur [0] => Tableau ci-dessus.

Quelqu'un peut-il conseiller sur la façon dont cela peut être fait?

Cordialement, Ben.

Répondre

5

Mise à jour:

Je viens de réaliser que vous obtiendrez toujours un seul élément « enfant » par élément de tableau, chaque $Key est unique dans un tableau de toute façon. Cela signifie que vous n'aurez jamais deux boucles avec la même valeur $Key.
Preuve: http://codepad.org/1g4Kjccc

Donc, si vous voulez insérer plus d'un tableau pour chaque touche, vous devez créer ces tableaux dans une boucle, par exemple:

$schedule[$Key] = array(array('event_id' => 'test', 
           'start_date_time' => 'test', 
           'end_date_time'=>'test'), 
         array('event_id' => 'test', 
           'start_date_time' => 'test', 
           'end_date_time'=>'test') 
         ); 

Peut-être que vous devez montrer votre " source » tableau et d'expliquer comment vous voulez créer des entrées ...


ancienne réponse: (pas mal, mais ne fait pas beaucoup de publicité ! Ifference;) (tant que $schedule ne contient pas déjà des valeurs))
Je pense que vous voulez:

foreach($events as $Key => $val) { 
    if(!isset($schedule[$Key])) { 
    $schedule[$Key] = array(); 
    } 
    $schedule[$Key][] = array('event_id' => 'test', 
          'start_date_time' => 'test', 
          'end_date_time'=>'test'); 
} 

Vous avez raison, que vous écrasez en permanence la valeur ... en initialisant l'élément $schedule[$Key] en tant que tableau une fois et en utilisant $schedule[$Key][], vous ajouter la nouvelle valeur à la matrice.

Voir le PHP array manual.

+0

Merci pour la réponse rapide, mais j'ai le même problème. Chaque tableau enfant est remplacé. Cordialement, Ben. – Ben

+0

@Ben: Voici comment ça sera. Je viens de réaliser que chaque élément contiendra de toute façon ** au plus un élément enfant, car chaque clé $ est unique. –

+0

@Ben: Bien sûr, c'est différent si '$ schedule' est déjà pré-rempli avec des valeurs ... mais alors ma" vieille réponse "devrait fonctionner ... –

Questions connexes