202 votes

+ opérateur pour tableau en PHP ?

<pre><code></code><p><code></code>que signifie pour tableau en PHP ?</p></pre>

283voto

Gordon Points 156415

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.

19voto

Frank de Jonge Points 438

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 !

10voto

Haim Evgi Points 40786

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/

6voto

Peter Smit Points 5655

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.

3voto

Tamlyn Points 2728

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 :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X