Fusion de tableaux avec l'opérateur " " : dévoiler son comportement
En PHP, l'opérateur facilite la fusion de deux tableaux, en ajoutant les éléments du tableau de droite au tableau de gauche. Cependant, comprendre comment il gère les clés en double est crucial.
Comment ça fonctionne
Selon le manuel PHP :
The + operator returns the right-hand array appended to the left-hand array; for keys that exist in both arrays, the elements from the left-hand array will be used, and the matching elements from the right-hand array will be ignored.
Exemple
Considérez ce qui suit exemple :
$test = array('hi'); $test += array('test', 'oh'); var_dump($test);
Sortie :
array(2) { [0]=> string(2) "hi" [1]=> string(2) "oh" }
Explication
L'opérateur ajoute les éléments du deuxième tableau (test, oh) à la fin du premier tableau (salut). Cependant, il ne remplace pas la clé en double (hi), elle reste donc dans le tableau fusionné.
Comparaison avec array_merge()
L'opérateur diffère du fonction array_merge() dans son comportement lors de la gestion des clés en double. array_merge() écrase les clés en double du tableau de gauche par les clés du tableau de droite.
Détails d'implémentation
L'implémentation au niveau C de l'opérateur peut être trouvé dans php-src/Zend/zend_operators.c. La logique est équivalente à l'extrait suivant :
$union = $array1; foreach ($array2 as $key => $value) { if (false === array_key_exists($key, $union)) { $union[$key] = $value; } }
Cet extrait crée un nouveau tableau ($union) basé sur le premier tableau ($array1) et ajoute des clés et des valeurs non dupliquées du deuxième tableau ( $array2).
Conclusion
L'opérateur en PHP fournit un moyen pratique de fusionner des tableaux, mais il est crucial de comprendre son comportement spécifique lorsqu'il rencontre des clés en double. La fonction array_merge() offre une alternative qui écrase les clés en double, permettant ainsi plus de contrôle sur le tableau fusionné.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!