どうも!
名古屋に越してきてまだ3ヶ月ばかりですが、早くも県内で引っ越すことになりました、面倒ですねええ、引っ越し😩
本題
PHP(JSでもみたことあるような気がする)で、
function method(...$params){}
みたいに関数の引数に使われてる「…」があると思うんですが、何してんのか分からないので調べてみました!
「...$params
」の正体
調べてみたら、可変長引数(可変個引数)というものだそうです。
引数に「...$params
」を含む関数のように、引数が可変する関数ことを可変個引数関数というみたいです。
PHP5.6以降から使用できるようになり、PHP5.5以前の場合は func_num_args()、func_get_arg() および func_get_args() で代用するとのことです。
参考:https://www.php.net/manual/ja/migration56.new-features.php#migration56.new-features.variadics
使い方
php.netに聞いてみると、、、
引数リストに … トークンを含めることで、 その関数が可変長の引数を受け取ることを示せます。 引数は、指定した変数に配列として渡されます。
参照:https://www.php.net/manual/ja/functions.arguments.php#functions.variable-arg-list
使ってみる。
testKahenChoArg.php
<?php function echoList($listName, ...$items) { echo $listName . PHP_EOL; foreach($items as $item) { echo '- [ ] ' . $item . PHP_EOL; } } echoList('引っ越しのtodo', '転出届を出す', '転入届を出す', '免許証の住所変更', 'クレカの住所変更'); echoList('購入リスト', 'カーテン', 'トイレットペーパー');
実行結果
$ php testKahenChoArg.php 引っ越しのtodo - [ ] 転出届を出す - [ ] 転入届を出す - [ ] 免許証の住所変更 - [ ] クレカの住所変更 購入リスト - [ ] カーテン - [ ] トイレットペーパー
なるほど〜😇引数を配列にして関数に渡してくれるんですね。
引数の数が明確でない時とかに使えそうですね!!!
おそらく使うことはあまりないと思うのですが、フレームワークなどを読んでる時にこの「…」がでてきて何をしているのか分からなかったので、スッキリしました^^