関数の引数を可変長で受け取る




この記事は最終更新日から2年以上経過しています。

例えば配列を3個ずつ関数に渡す処理などの場合、最後のパラメーターは1,2,3のいずれかになります。
関数のパラメーターが3個固定の場合、最後のパラメーターが1,2個の場合はパラメーターの数が合わずにエラーになるため、関数の引数は可変長で受け取る必要があります。
このような関数の引数を可変長で受け取る場合、PHP5.6以降限定となりますが、「…」を引数の前に記載することで可変長引数を定義することができます。

例えば以下のように配列を3個ずつに分割して関数に渡す場合、最後のパラメーター数は1ことなりますので、可変長で定義すると簡潔に処理することができます。

$array = [];
for($i = 0; $i < 10; $i++) {
    $array[] = $i;
}
$collection = collect($array)->chunk(3);
dump($collection->mapSpread(function(...$params) {
    return $params[0] * $params[count($params) - 1];
})->all());