PHP anteponer matriz asociativa con claves literales?
¿Es posible anteponer un array asociativo con pares literales key=>value? 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');
4 answers
¿No puedes simplemente hacer:
$resulting_array = $array2 + $array1;
?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-09-03 01:29:35
La respuesta es no. No puede anteponer un array asociativo con un par clave-valor.
Sin embargo, puede crear una nueva matriz que contenga el nuevo par clave-valor al principio 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 complejidad O(n).
La sintaxis está abajo.
$new_array = array('new_key' => 'value') + $original_array;
Nota: No use array_merge(). array_merge () sobrescribe claves y no conserva claves numéricas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-23 18:59:34
En su situación, desea usar array_merge ():
array_merge(array('fruit1'=>'cherry', 'fruit2'=>'blueberry'), array('fruit3'=>'apple', 'fruit4'=>'orange'));
Para anteponer un único valor, para una matriz asociativa, en lugar de array_unshift(), de nuevo use array_merge ():
array_merge(array($key => $value), $myarray);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-25 17:52:00
@Cletus es perfecto. Solo para agregar, si el orden de los elementos en los arrays de entrada son ambiguos, y necesita ordenar el array final, es posible que desee ksort :
$resulting_array = $array1 + $array2;
ksort($resulting_array);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-12 04:56:48