Réponses
Trop de publicités?Citant le Manuel PHP sur les Opérateurs de Langage
Les + de l'opérateur retourne du côté droit du tableau annexé à la gauche de la matrice; pour les clés qui existent dans les deux tableaux, les éléments de la gauche de la matrice seront utilisés, et les éléments correspondants de la droite de la matrice sera ignoré.
Donc, si vous ne
$array1 = ['one', 'two', 'foo' => 'bar'];
$array2 = ['three', 'four', 'five', 'foo' => 'baz'];
print_r($array1 + $array2);
Vous obtiendrez
Array
(
[0] => one // preserved from $array1 (left-hand array)
[1] => two // preserved from $array1 (left-hand array)
[foo] => bar // preserved from $array1 (left-hand array)
[2] => five // added from $array2 (right-hand array)
)
Ainsi, la logique de l' +
est l'équivalent de l'extrait de code suivant:
$union = $array1;
foreach ($array2 as $key => $value) {
if (false === array_key_exists($key, $union)) {
$union[$key] = $value;
}
}
Si vous êtes intéressé par les détails de la C-mise en œuvre au niveau de la tête de
Remarque, c' +
est différent de la façon dont array_merge()
permettrait de combiner les tableaux:
print_r(array_merge($array1, $array2));
serait vous donner
Array
(
[0] => one // preserved from $array1
[1] => two // preserved from $array1
[foo] => baz // overwritten from $array2
[2] => three // appended from $array2
[3] => four // appended from $array2
[4] => five // appended from $array2
)
Voir les pages liées pour plus d'exemples.
Le meilleur exemple que j’ai trouvé pour utiliser cette est un tableau de configuration.
Le $default_vars, comme il l’indique, est le tableau des valeurs par défaut. Le tableau $user_vars remplace les valeurs définies dans $default_vars. Toutes les valeurs manquantes dans $user_vars sont maintenant la puissance réactive les valeurs par défaut de $default_vars.
Cela serait print_r comme :
J’espère que cette aide !
L'opérateur + ajoute les éléments des autres touches de la droite la main de tableau à la main gauche, tandis que dupliqué les touches ne sont PAS remplacés.
<?php
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b; // Union of $a and $b
echo "Union of \$a and \$b: \n";
var_dump($c);
$c = $b + $a; // Union of $b and $a
echo "Union of \$b and \$a: \n";
var_dump($c);
?>
Une fois exécuté, ce script va imprimer les suivantes:
Union de $a et $b: array(3) { ["a"]=> string(5) "pomme" ["b"]=> string(6) "la banane" ["c"]=> string(6) "cerise" } Union de $b et $a: array(3) { ["a"]=> string(4) "poire" ["b"]=> string(10) "à la fraise" ["c"]=> string(6) "cerise" }
pas exactement comme array_merge
Notez que l'opérateur plus pour les tableaux ‘+' est unidimensionnel, et ne convient que pour de simples tableaux.
lire la suite :
http://www.vancelucas.com/blog/php-array_merge-preserving-numeric-keys/
Cet opérateur prend l’union de deux tableaux (mêmes qu’array_merge, sauf qu’avec une clé dupliquée array_merge sont écrasés).
La documentation pour les opérateurs du tableau se trouve ici.
Le `` opérateur produit les mêmes résultats que array_replace(). Cependant puisque les arguments de l’opérateur sont inversés, le classement du tableau résultant peut également être différent.
Étendre sur un autre exemple de cette page :
sorties :