Contents
スプレッド構文とは
配列やオブジェクトの要素を展開するための構文です。
この構文は、配列やオブジェクトをより簡潔かつ柔軟に操作するために使用されます。
スプレッド構文を使用すると、配列やオブジェクトの要素を取り出して、別の配列やオブジェクトに組み込むことができます。
配列の場合、要素を展開して別の配列に組み込むことができます。オブジェクトの場合、プロパティを展開して別のオブジェクトに組み込むことができます。
$test = [1, 2, 3];
$testUnion = [...$test, 4, 5, 6];
var_dump($testUnion);
// [1, 2, 3, 4, 5, 6]
$test = ['name' => 'tarou', 'age' => 30];
$testUnion = ['city' => 'Gifu', ...$person1];
var_dump($testUnion);
// ['city' => 'Gifu', 'name' => 'tarou', 'age' => 30]
使い所
複数の配列を結合したり、オブジェクトのプロパティを組み合わせたりする場合
$test1 = [1, 2, 3];
$test2 = [4, 5, 6];
$testUniion = [...$numbers1, ...$numbers2];
var_dump($testUnion);
// [1, 2, 3, 4, 5, 6]
※array_merge()とやっていることは一緒。
なので、基本的にarray_merge()を使用することは今後少なそう。
配列やオブジェクトの一部の要素を変更する場合
$original = [1, 2, 3, 4, 5];
$modified = [...array_slice($original, 0, 2), 6, ...array_slice($original, 3)];
var_dump($modified);
//展開
array(5) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(6)
[3]=>
int(4)
[4]=>
int(5)
}
関数の引数として使用する場合
function sum(...$numbers) {
return array_sum($numbers);
}
$result = sum(1, 2, 3, 4, 5);
var_dump($result);
//int(15)
※シンプルに配列を渡せばいいのではないか?と思ったのですが、呼び出し元で渡している引数が無限に増えても対応できるので結構便利かもしれません。
配列やオブジェクトのコピーを作成する場合
$original = [1, 2, 3];
$copy = [...$original];
var_dump($copy);
// [1, 2, 3]
思う所
JSを使うPJならつかっても良いかな…?
ES2015からJSでもスプレッド構文が出現しているとのことです。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Spread_syntax
一応PHPの方が先に機能として発表しているのですが、何と言ってもJS様です。
JS様と統一性を持って記述ができるのが魅力かもしれませんね…