Operador Spread en PHP

Operador Spread en PHP
El parámetro spread “…” lo que hace es expandir un array como si fueran elementos independientes.
Si por ejemplo tenemos:
$a = [0, 1, 2, 3];
$b = [4, 5, 6];
Y queremos añadir los elementos $b al final de $a para que nos quede:
[0, 1, 2, 3, 4, 5, 6] // longitud de $a es 7
no podemos hacer:
$a[] = $b;
Ni:
array_push($a,$b);
Porque en ambos casos el resultado sería:
[0, 1, 2, 3, [4, 5, 6]] // longitud de $a es 5
O visto con un print_r($a):
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => Array ( [0] => 4 [1] => 5 [2] => 6 ) )
Es decir, que el 5o elemento de $a es un array que contiente los elementos de $b.
De una forma rudimentaria podríamos hacer:
foreach ($b as $item) {
$a[] = $item;
}
Cosa que nos devolvería el resultado deseado. Pero no es cool…
En PHP (en JS y otros lenguajes) es mejor usar el operador spread, que expande el array convirtiéndolo en una lista de elementos independientes:
array_push($a, …$b);
Obteniendo el resultado deseado:
[0, 1, 2, 3, 4, 5, 6] // longitud de $a es 7
Fijaos que la función array_push() de PHP admite múltiples parámetros como valores a añadir después del primero que es el array:
array_push($a, 5, 6, 7, 8);
y al expandir el array $b con el operador spread estamos haciendo lo mismo con sus elementos.
Otra cosa que podríamos hacer por ejemplo con el operador spread es:
$array_numeros_del_0_al_9 = [0, 1, 2, 3, …$b, 7, 7, 9];
Por último comentar que cualquier asignación que hagamos con este operador siempre será por copia y la modificación del array original ($b en los ejemplos) no modificarán nunca los elementos de los arrays a los cuales se han asignado sus valores.