🚀
PHPで関数を可変長引数で呼び出す方法
<?php
$format = 'There are %d monkeys in the %s !!';
$num = 5;
$location = 'tree';
// 固定長引数での関数コール(通常の関数コール)
printf($format, $num, $location);
// 可変長引数を使った関数コール その1(関数が固定の場合)
printf(...array($format, $num, $location));
// 可変長引数を使った関数コール その2(関数すらも動的にしたい場合)
call_user_func_array('printf', array($format, $num, $location));
フォーマットと引数の個数が変わる場合に、通常の関数コールはできないので、可変長での呼び出し方がある。
その1のほうは、スプレッド演算子をつかっていて、PHPのバージョンによっては使えない。
その場合は、その2のほうを使う形になる。
上記は、PHP8.2で動作を確認。
Discussion