array_merge
array_merge($array1, $array2, …)
Assemble un ou plusieurs tableaux en un seul et renvoie le résultat. Les éléments à clé numérique sont ajoutés à la fin et renumérotés à partir de zéro, les éléments à clé texte d’un tableau suivant écrasent les mêmes clés d’un tableau précédent.
Exemples
print_r(array_merge(array("a", "b"), array("c", "d"))); // Array ( [0] => a [1] => b [2] => c [3] => d )
// clés texte – la valeur du tableau suivant l'emporte
$defaults = array("couleur" => "bleu", "taille" => "M");
$chosen = array("taille" => "L");
print_r(array_merge($defaults, $chosen)); // Array ( [couleur] => bleu [taille] => L )
// les clés numériques sont renumérotées
print_r(array_merge(array(5 => "x"), array(9 => "y"))); // Array ( [0] => x [1] => y )
// l'opérateur + conserve les clés et, pour une même clé, garde la valeur du premier tableau
print_r(array(5 => "x") + array(5 => "y", 9 => "z")); // Array ( [5] => x [9] => z )
// ajouter plusieurs éléments à la fin d'un tableau
$array = array(1, 2);
$array = array_merge($array, array(3, 4));
echo implode(",", $array); // 1,2,3,4
// depuis PHP 7.4, les tableaux à clés numériques peuvent aussi être assemblés ainsi
$all = [...$array, ...array(5, 6)];
echo implode(",", $all); // 1,2,3,4,5,6
Points d’attention
- Les clés numériques sont perdues (renumérotées), même quand ce sont par exemple des ID d’une base de données. Pour les conserver, utilisez l’opérateur + – mais pour une même clé il garde la valeur du premier tableau.
- Tous les paramètres doivent être des tableaux. Quand l’un d’eux est null, PHP 7 renvoie null avec un avertissement et PHP 8 lance une exception TypeError.
- Appeler array_merge dans une boucle (le tableau est copié à chaque tour) est lent pour les grands tableaux. Rassemblez les tableaux dans une liste et assemblez-les en une fois : array_merge(...$arrays).
- La syntaxe [...$a, ...$b] ne fonctionne en PHP 7.4 que pour les clés numériques, les clés texte ne sont prises en charge que depuis PHP 8.1.
Fonctions associées :
array_key_exists()
array_filter()
implode()
array_replace()