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.