array_push () con par valor clave

184

Tengo una matriz existente a la que quiero agregar un valor.

Estoy tratando de lograr eso usando array_push()en vano.

Debajo está mi código:

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

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

Lo que quiero lograr es agregar cat como clave a la $datamatriz con wagon como valor para acceder a él como en el fragmento a continuación:

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

¿Cómo puedo lograr eso?

mistero
fuente

Respuestas:

334

Entonces, ¿qué pasa con tener:

$data['cat']='wagon';
dusoft
fuente
Advertencia: $a['123'] = 456;- cadena '123' se convierte en clave número entero 123.
Bancer
Para claves enteras, no desea incluirlas en comillas / cadena.
dusoft
No necesariamente. Si algunas otras claves son cadenas como '123a', se podría desear conservar las claves de cadena para todos los elementos.
bancer
51

Si necesita agregar clave múltiple => valor, intente esto.

$data = array_merge($data, array("cat"=>"wagon","foo"=>"baar"));
Harijs Krūtainis
fuente
1
También podría usar un bucle para eso.
Jack Perry el
Un bucle no ayuda. Si desea insertar valores con un nombre de clave duplicado, debe usar array_merge.
Richard Smith el
38
$data['cat'] = 'wagon';

Eso es todo lo que necesita para agregar la clave y el valor a la matriz.

rogeriopvl
fuente
6

Por ejemplo:

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

Para cambiar el valor clave:

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

salida:

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

Para agregar un nuevo par de valores clave:

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

salida:

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

Príncipe Patel
fuente
5

No necesita usar la función array_push (), puede asignar un nuevo valor con una nueva clave directamente a la matriz como ...

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


Output:

   Array(
     [color1] => red
     [color2] => blue
     [color3] => green
   )
Deepak Vaishnav
fuente
También debe resaltar cuál es la diferencia exacta, aquí usó = en lugar de, para OP
NitinSingh
1
Este código está mal array_push toma dos parámetros, y recibirá una advertencia sobre el hecho de que lo está usando mal con el resultado de que la llamada a array_push no hace nada. Lo que realmente está haciendo la segunda línea de su código es simplemente $array['color3']='green'. Eso es exactamente lo que hizo @dusoft arriba. Su código es solo una ofuscación de esa solución.
Richard Smith
@ RichardSmith gracias por mostrar mi error, he cambiado mi respuesta. :)
Deepak Vaishnav
0

Matriz ['clave'] = valor;

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

Esto es lo que necesitas. No es necesario utilizar la función array_push () para esto. En algún momento el problema es muy simple y pensamos de manera compleja :).

Mr-Faizan
fuente
-3

Solo haz eso:

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

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

* En php 7 y superior, la matriz se crea usando [], no ()

xayer
fuente
Dos problemas: array_pushagrega sus parámetros 2nd + como nuevos valores (no emparejamientos clave-valor como lo array_mergehace), y PHP 7 acepta felizmente la array()sintaxis de la matriz (así como la []sintaxis abreviada )
Chris Forrence