🚀

PHPで関数を可変長引数で呼び出す方法

2024/03/19に公開
<?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