109 votes

Ajout d'un élément à un tableau associatif

//go through each question
foreach($file_data as $value) {
   //separate the string by pipes and place in variables
   list($category, $question) = explode('|', $value);

   //place in assoc array
   $data = array($category => $question);
   print_r($data);

}

Cela ne fonctionne pas car cela remplace la valeur des données. Mais comment faire pour qu'il ajoute une valeur associative à chaque boucle ? $file_data est un tableau de données qui a une taille dynamique.

165voto

Vous pouvez simplement faire ceci

$data += array($category => $question);

Si vous travaillez avec php 5.4+, vous devez vous assurer que

$data += [$category => $question];

111voto

ThiefMaster Points 135805

Je pense que vous voulez $data[$category] = $question;

Ou si vous voulez un tableau qui associe des catégories à un tableau de questions :

$data = array();
foreach($file_data as $value) {
    list($category, $question) = explode('|', $value, 2);

    if(!isset($data[$category])) {
        $data[$category] = array();
    }
    $data[$category][] = $question;
}
print_r($data);

35voto

moe Points 2718

Avant la boucle for :

$data = array();

puis dans votre boucle :

$data[] = array($catagory => $question);

12voto

Mike Points 960

Je sais que c'est une vieille question mais vous pouvez utiliser :

array_push($data, array($category => $question));

Cela va pousser le array à l'extrémité de votre actuel array . Ou si vous essayez simplement d'ajouter des valeurs uniques à la fin de votre tableau, sans ajouter d'autres tableaux, vous pouvez utiliser ceci :

array_push($data,$question);

6voto

maximran Points 345

Pour tous ceux qui ont également besoin d'ajouter dans un tableau associatif 2d, vous pouvez aussi utiliser la réponse donnée ci-dessus, et utiliser le code comme ceci

 $data[$category]["test"] = $question

vous pouvez ensuite l'appeler (pour tester le résultat par :

echo $data[$category]["test"];

qui devrait imprimer $question

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X