array_push () con coppia valore-chiave


184

Ho un array esistente a cui voglio aggiungere un valore.

Sto provando a farlo usando array_push()senza alcun risultato.

Di seguito è il mio codice:

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

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

Quello che voglio ottenere è aggiungere cat come chiave $dataall'array con wagon come valore in modo da accedervi come nello snippet di seguito:

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

Come posso raggiungerlo?

Risposte:


334

Che dire di avere:

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

Avvertenza: $a['123'] = 456;- la stringa '123' viene convertita in chiave intera 123.
bancer

Per le chiavi intere non si desidera racchiuderle tra virgolette / stringhe.
dusoft l'

Non necessariamente. Se alcune altre chiavi sono stringhe come "123a", è possibile che si desideri conservare le chiavi di stringa per tutti gli elementi.
bancer il

51

Se devi aggiungere più chiave => valore, prova questo.

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

1
Potrebbe anche usare un loop per quello.
Jack Perry,

Un ciclo non aiuta. Se si desidera inviare valori con un nome chiave duplicato, è necessario utilizzare array_merge.
Richard Smith,

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

Questo è tutto ciò che serve per aggiungere la chiave e il valore all'array.


6

Per esempio:

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

Per modificare il valore chiave:

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

produzione:

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

Per aggiungere una nuova coppia di valori chiave:

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

produzione:

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


5

Non è necessario utilizzare la funzione array_push (), è possibile assegnare un nuovo valore con una nuova chiave direttamente all'array come ..

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


Output:

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

Dovresti anche evidenziare qual è la differenza esatta, qui hai usato = invece di, per OP
NitinSingh

1
Questo codice è sbagliato array_push accetta due parametri e riceverai un avviso sul fatto che lo stai usando in modo errato con il risultato che la chiamata a array_push non fa nulla. Ciò che la seconda riga del codice sta effettivamente facendo è semplicemente $array['color3']='green'. Questo è esattamente ciò che @dusoft ha fatto sopra. Il tuo codice è solo un offuscamento di quella soluzione.
Richard Smith,

@RichardSmith grazie per aver mostrato il mio errore, ho cambiato la mia risposta. :)
Deepak Vaishnav,

0

Array ['key'] = value;

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

Questo è quello di cui hai bisogno. Non è necessario utilizzare la funzione array_push () per questo. Qualche volta il problema è molto semplice e pensiamo in modo complesso :).


-3

Fallo e basta:

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

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

* In php 7 e versioni successive, l'array sta creando usando [], non ()


Due problemi: array_pushaggiunge i suoi parametri 2nd + come nuovi valori (non accoppiamenti valore-chiave come array_mergefa) e PHP 7 accetta felicemente la array()sintassi dell'array (così come la []sintassi abbreviata )
Chris Forrence
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.