基礎

PHPの配列アンパック|スプレッド演算子で配列を展開

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以降は連想配列のアンパックも可能