web-dev-qa-db-fra.com

PHP préfixe tableau associatif avec des clés littérales?

Est-il possible de préfixer un tableau associatif avec des paires clé/valeur => valeur? Je sais que array_unshift () fonctionne avec des clés numériques, mais j'espère quelque chose qui fonctionnera avec des clés littérales.

A titre d'exemple, j'aimerais procéder comme suit:

$array1 = array('fruit3'=>'Apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');

// prepend magic

$resulting_array = ('fruit1'=>'cherry', 
                    'fruit2'=>'blueberry', 
                    'fruit3'=>'Apple', 
                    'fruit4'=>'orange');
101
Colin Brock

Ne pouvez-vous pas simplement faire:

$resulting_array = $array2 + $array1;

?

194
cletus

La réponse est non. Vous ne pouvez pas ajouter un tableau associatif avec une paire clé-valeur.

Cependant, vous pouvez créer un nouveau tableau contenant la nouvelle paire clé-valeur au début du tableau avec l'opérateur d'union +. Le résultat est un tableau entièrement nouveau et la création du nouveau tableau présente une complexité O(n).

La syntaxe est ci-dessous.

$new_array = array('new_key' => 'value') + $original_array;

Remarque: N'utilisez pas array_merge (). array_merge () écrase les clés et ne conserve pas les clés numériques.

23
PHPguru

Dans votre cas, vous voulez utiliser array_merge ():

array_merge(array('fruit1'=>'cherry', 'fruit2'=>'blueberry'), array('fruit3'=>'Apple', 'fruit4'=>'orange'));

Pour ajouter une valeur unique, pour un tableau associatif, au lieu de array_unshift (), utilisez à nouveau array_merge ():

array_merge(array($key => $value), $myarray);
16
mvpetrovich

@Cletus est sur place. Ajoutons simplement que si l'ordre des éléments dans les tableaux d'entrée est ambigu et que vous avez besoin que le tableau final soit trié, vous voudrez peut-être ksort :

$resulting_array = $array1 + $array2;
ksort($resulting_array);
5
karim79

En utilisant la même méthode que @mvpetrovich, vous pouvez utiliser la version abrégée d'un tableau pour raccourcir la syntaxe.

$_array = array_merge(["key1" => "key_value"], $_old_array);

Références:

PHP: array_merge ()

PHP: Tableaux - Manuel

À partir de PHP 5.4, vous pouvez également utiliser la syntaxe de tableau abrégé, qui remplace array () par [].

0
Bryce Gough