array_push () avec paire clé / valeur


184

J'ai un tableau existant auquel je veux ajouter une valeur.

J'essaye d'y parvenir en array_push()vain.

Voici mon code:

$data = array(
    "dog" => "cat"
);

array_push($data['cat'], 'wagon');

Ce que je veux réaliser, c'est d'ajouter cat comme clé du $datatableau avec wagon comme valeur afin d'y accéder comme dans l'extrait ci-dessous:

echo $data['cat']; // the expected output is: wagon

Comment puis-je y parvenir?

Réponses:


334

Alors qu'en est-il d'avoir:

$data['cat']='wagon';

Attention: $a['123'] = 456;- la chaîne '123' est convertie en clé entière 123.
— bancer le

Pour les clés entières, vous ne voulez pas les envelopper dans des guillemets / chaîne.
— dusoft

Pas nécessairement. Si certaines autres clés sont des chaînes comme «123a», il peut être souhaitable de conserver les clés de chaîne pour tous les éléments.
— bancer

51

Si vous devez ajouter plusieurs clés => valeur, essayez ceci.

$data = array_merge($data, array("cat"=>"wagon","foo"=>"baar"));

1
Pourrait également utiliser une boucle pour cela.
— Jack Perry

Une boucle n'aide pas. Si vous souhaitez envoyer des valeurs avec un nom de clé en double, vous devez utiliser array_merge.
— Richard Smith du

38
$data['cat'] = 'wagon';

C'est tout ce dont vous avez besoin pour ajouter la clé et la valeur au tableau.


6

Par exemple:

$data = array('firstKey' => 'firstValue', 'secondKey' => 'secondValue');

Pour modifier la valeur de la clé:

$data['firstKey'] = 'changedValue'; 
//this will change value of firstKey because firstkey is available in array

production:

Array ([firstKey] => changedValue [secondKey] => secondValue)

Pour ajouter une nouvelle paire valeur / clé:

$data['newKey'] = 'newValue'; 
//this will add new key and value because newKey is not available in array

production:

Array ([firstKey] => firstValue [secondKey] => secondValue [newKey] => newValue)


5

Vous n'avez pas besoin d'utiliser la fonction array_push (), vous pouvez attribuer une nouvelle valeur avec une nouvelle clé directement au tableau comme ..

$array = array("color1"=>"red", "color2"=>"blue");
$array['color3']='green';
print_r($array);


Output:

   Array(
     [color1] => red
     [color2] => blue
     [color3] => green
   )

Vous devriez également souligner quelle est la différence exacte, ici vous avez utilisé = au lieu de, pour OP
— NitinSingh

1
Ce code est faux. array_push prend deux paramètres, et vous recevrez un avertissement sur le fait que vous l'utilisez mal avec le résultat que l'appel à array_push ne fait rien. Ce que fait réellement la deuxième ligne de votre code est simplement $array['color3']='green'. C'est exactement ce que @dusoft a fait ci-dessus. Votre code n'est qu'une obscurité de cette solution.
— Richard Smith

@RichardSmith merci d'avoir montré mon erreur, j'ai changé ma réponse. :)
— Deepak Vaishnav

0

Array ['key'] = valeur;

$data['cat'] = 'wagon';

C'est ce dont vous avez besoin. Pas besoin d'utiliser la fonction array_push () pour cela. Parfois le problème est très simple et nous pensons de manière complexe :).


-3

Faites juste ça:

$data = [
    "dog" => "cat"
];

array_push($data, ['cat' => 'wagon']);

* En php 7 et supérieur, le tableau crée en utilisant [], pas ()


Deux problèmes: array_pushajoute ses 2ème + paramètres en tant que nouvelles valeurs (pas les paires clé-valeur comme le array_mergefait), et PHP 7 accepte volontiers la array()syntaxe du tableau (ainsi que la []syntaxe abrégée )
— Chris Forrence
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.