¿Es posible anteponer una matriz asociativa con pares literal clave => valor? Sé que array_unshift () funciona con claves numéricas, pero espero algo que funcione con claves literales.
Como ejemplo, me gustaría hacer lo siguiente:
$array1 = array('fruit3'=>'apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');
// prepend magic
$resulting_array = ('fruit1'=>'cherry',
'fruit2'=>'blueberry',
'fruit3'=>'apple',
'fruit4'=>'orange');
php
arrays
associative-array
Colin Brock
fuente
fuente
La respuesta es no. No puede anteponer una matriz asociativa con un par clave-valor.
Sin embargo, puede crear una nueva matriz que contenga el nuevo par clave-valor al comienzo de la matriz con el operador de unión
+
. Sin embargo, el resultado es una matriz completamente nueva y la creación de la nueva matriz tiene una complejidad O (n).La sintaxis está a continuación.
Nota: No utilice array_merge (). array_merge () sobrescribe las claves y no conserva las claves numéricas.
fuente
En su situación, desea utilizar array_merge ():
Para anteponer un solo valor, para una matriz asociativa, en lugar de array_unshift (), use de nuevo array_merge ():
fuente
@Cletus da en el clavo. Solo para agregar, si el orden de los elementos en las matrices de entrada es ambiguo y necesita que se ordene la matriz final, es posible que desee ksort :
fuente
ksort
devuelve un valor booleano, por lo que lo anterior debe hacerse como dos declaraciones y no una, por ejemplo$a = $array1 + $array2; ksort($a);
, de lo contrario$resulting_array
, será un valor booleano y no la matriz que esperaba.Usando el mismo método que @mvpetrovich, puede usar la versión abreviada de una matriz para acortar la sintaxis.
Referencias:
PHP: fusión_array ()
PHP: Matrices - Manual
fuente