PHP 7.4以降、スプレッド演算子(...)を使って配列を別の配列に展開(アンパック)できるようになりました。配列の結合や関数への引数渡しに便利です。
基本的な使い方
PHP
<?php
$first = [1, 2, 3];
$second = [4, 5, 6];
// スプレッド演算子で配列を展開して結合
$merged = [...$first, ...$second];
print_r($merged);
// 途中に要素を追加
$withExtra = [...$first, 99, ...$second];
print_r($withExtra);
?>
実行結果
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 99 [4] => 4 [5] => 5 [6] => 6 )
関数の引数に展開
PHP
<?php
function sum(int $a, int $b, int $c): int {
return $a + $b + $c;
}
$numbers = [10, 20, 30];
echo sum(...$numbers); // 60
?>
array_merge()との違い
スプレッド演算子はarray_merge()と似ていますが、配列リテラル内で使えるため、より直感的にコードを書けます。PHP 8.1以降は連想配列のアンパックもサポートされています。
まとめ
...演算子で配列を展開し、別の配列に結合できる- 関数の引数に配列を展開して渡すこともできる
- PHP 8.1以降は連想配列のアンパックも可能