L'opérateur "+" et array_merge():array array_merge (array array1, array array2 [, array ...]) peuvent fusionner plusieurs tableaux, mais il existe une légère différence dans le processus d'utilisation.
array_merge est décrit dans le manuel de référence comme suit :
array_merge() fusionne les cellules de deux tableaux ou plus, les valeurs d'un tableau étant ajoutées au tableau précédent. Renvoie le tableau résultant.
Si le tableau d'entrée a le même nom de clé de chaîne, la valeur après le nom de clé écrasera la valeur précédente. Cependant, si le tableau contient des clés numériques, les valeurs suivantes n'écraseront pas les valeurs d'origine mais leur seront ajoutées.
La différence entre les deux est :
1. Lorsque le nom de la clé du tableau est un nom de clé numérique et qu'il existe des clés numériques portant le même nom dans les deux tableaux à fusionner, l'utilisation de array_merge() n'écrasera pas la valeur d'origine, tandis que l'utilisation de "+" pour fusionner les tableaux remplacera la première. La valeur est renvoyée comme résultat final, et les valeurs des tableaux suivants avec le même nom de clé sont "rejetées" (remarque : il ne s'agit pas d'écraser mais de conserver la valeur qui apparaît en premier). Exemple :
$array1 = array(1=>'0');
$array2 = array(1=> "données");
$result1 = $array2 + $array1;/*Le résultat est la valeur de $array2*/
print_r($résultat);
$result = $array1 + $array2 ;/*Le résultat est la valeur de $array1*/
print_r($résultat);
$result3 = array_merge($array2,$array1);/*Le résultat est la valeur de $array2 et $array1, et le nom de la clé est réaffecté*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*Le résultat est la valeur de $array1 et $array2, et le nom de la clé est réaffecté*/
print_r($result4);
Le résultat de sortie est :
Tableau ( [1] => données )
Tableau ( [1] => 0 )
Tableau (
[0] => données
[1] => 0
)
Tableau
(
[0] => 0
[1] => données
)
2. Lorsque le même nom de clé de tableau est un caractère, l'opérateur "+" est le même que lorsque le nom de clé est un nombre, mais array_merge() écrasera la valeur précédente du même nom de clé.
exemple:
$array1 = array('asd'=>'0');
$array2 = array('asd' => "données");
$result1 = $array2 + $array1;/*Le résultat est la valeur de $array2*/
print_r($résultat);
$result = $array1 + $array2 ;/*Le résultat est la valeur de $array1*/
print_r($résultat);
$result3 = array_merge($array2,$array1);/*Le résultat est $array1*/
print_r($result3);
$result4 = array_merge($array1,$array2);/*Le résultat est $array2*/
print_r($result4);
Le résultat de sortie est :
Array ([asd] => data)
Tableau ( [asd] => 0 )
Tableau ( [asd] => 0 )
Tableau ( [asd] => données )