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?

monsieur
la source

Réponses:

334

Alors qu'en est-il d'avoir:

$data['cat']='wagon';
dusoft
la source
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"));
Harijs Krūtainis
la source
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.

rogeriopvl
la source
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)

Prince Patel
la source
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
   )
Deepak Vaishnav
la source
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 :).

Monsieur-Faizan
la source
-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 ()

xayer
la source
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