(PHP) スプレッド構文の使い方【PHP7.4〜】

(PHP) スプレッド構文の使い方まとめ【PHP7.4〜】

 

本記事では、PHP7.4より使用可能な構文である、
スプレッド構文の使い方について解説していく。

 

(PHP) スプレッド構文とは

PHP7.4からは、スプレッド構文と呼ばれる、
配列を従来より柔軟に扱うことが可能な構文が使用可能になった。

$values = [3, 4, 5];

$array = [ 1, 2, ...$values ];

=>$array = [1, 2, 3, 4, 5]

 

php7.4からは配列式内で使用可能になった

今回、php7.4から使用可能になったのは「配列式内での使用」のことだ。

と言うのもphp7.3以前から、関数の引数において「…$変数名」と言うスプレッド構文の書式は使用可能であったからだ。

今回配列形式の中にも使用可能になったと言うことで、本記事では改めて①配列形式でのスプレッド構文と、②引数に使うスプレッド構文の使い方についてまとめてみた。

 

(PHP) スプレッド構文の書式

phpのスプレッド構文の書式を最初に確認しておく。
phpのスプレッド構文の書式は以下の様になっている。

//phpのスプレッド構文の書式

...$変数名

「.」ピリオド3つの後に変数名を記載する。

 

(PHP) スプレッド構文の使い方

ここからは実際に、PHPのスプレッド構文の使い方をサンプルを交えて解説していく。
PHPのスプレッド構文の使い方は以下の2パターンについて解説していく。

 

PHPのスプレッド構文の使い方2パターン

①配列形式でのスプレッド構文

②引数に使うスプレッド構文

 




 

①配列形式でのスプレッド構文

一つめは、配列形式でのスプレッド構文の使い方だ。

配列形式のスプレッド構文は、冒頭でも紹介した通り、PHP7.4から使用可能になった使い方だ。

<?php

$array1 = ['lion', 'monkey', 'gollira'];
$array2 = ['elephant', 'tiger'];

$result = [...$array1, ...$array2];

// 出力結果
Array
(
    [0] => lion
    [1] => monkey
    [2] => gollira
    [3] => elephant
    [4] => tiger
)

上記の様に、
スプレッド構文の変数を配列形式の中に埋め込むことで、変数内の値をマージすることが可能だ。

上記はphp7.3以前では、array_merge関数を使用しないと実現できなかった。

//php7.3以前はarray_merge関数を使用

$array1 = ['lion', 'monkey', 'gollira'];
$array2 = ['elephant', 'tiger'];

$result = array_merge($array1, $array2);

しかしarray_merge関数を使用する場合、引数に使用する値は全て配列である必要があるため、配列でない値をマージするには若干の使い勝手の悪さがあった。

$array1 = ['lion', 'monkey', 'gollira'];

$result = array_merge('elephant', $array);  //エラー、第一引数が配列ではない。

しかし、スプレッド構文を使用すれば、配列形式内の値は、配列でない値も含めてマージ可能なため、より配列の扱いが柔軟になったと言える。

$array1 = ['lion', 'monkey', 'gollira'];

$result = ['elephant', ...$array1];

// 出力結果
Array
(
    [0] => elephant
    [1] => lion
    [2] => monkey
    [3] => gollira
)

 

 

②引数に使うスプレッド構文

二つめは、引数に使うスプレッド構文の使い方を紹介していく。

こちらはphp7.3以前から使用可能だった使い方だ。

test('lion', 'monkey', 'gollira');

function test(...$params) {       // 関数の引数を「...」と記述する
    foreach($params as $value) {
        echo $value ." : ";
    }
}


// 実行結果
lion : monkey : gollira

上記の様に、関数「test」の引数にはスプレッド構文が使用されており、引数をいくつでも受け付けられる状態になっている。

関数内では受け付けた引数を順番にechoできているのが分かるだろう。

 

PHPのスプレッド構文の使い方まとめ

  • php7.4より、配列形式内でスプレッド構文を使用可能となった。
  • array_merge関数と比較して、配列以外の値も一緒にマージ可能なためより柔軟に配列操作が可能になった。
  • 関数の引数へのスプレッド構文の使用は引き続き使用可能

 

関連記事

(PHP) php7.2でcount()のWarningが出る【対処法】
(PHP) php7以降で、Illegal string offset のエラーが出る【対処法】

 

https://www.php.net/manual/ja/migration56.new-features.php#migration56.new-features.variadics

https://www.php.net/manual/ja/migration74.php

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。