雑多なブログ

音楽や語学、プログラム関連の話題について書いています

PHP: 可変長引数の関数定義

PHP5.6以降は、func_num_args(), func_get_arg(), func_get_args()を使わずに可変長引数を実現できる。 そのことに最近気づいた・・・・

当然、余計な関数を使わないので実装がスッキリする。

<?php
function test(...$params) {
    var_dump($params);
}

test(1,2,3,4,5);

実行結果

array(5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
}

...$params は必ず末尾に定義にする。次の例はエラーとなる。

function test(...$params, $params2) 

...$params の前に別の引数を定義するのはOK。

function test($params2, ...$params) 

参考サイト

www.php.net