(PHP 4, PHP 5, PHP 7, PHP 8)
func_get_args — 関数の引数リストを配列として返す
関数の引数リストを配列で取得します。
この関数は func_num_args() および func_get_arg() と組み合わせて使用され、 これによりユーザー定義の章において可変長の引数リストを使用することができるようになります。
この関数にはパラメータはありません。
配列を返します。この配列の各要素は、 現在のユーザー定義関数の引数リストにおける対応するメンバのコピーとなります。
ユーザー定義関数の外部からコールされた際に警告を発生します。
例1 func_get_args() の例
<?php
function foo()
{
$numargs = func_num_args();
echo "引数の数: $numargs \n";
if ($numargs >= 2) {
echo "二番目の引数は: " . func_get_arg(1) . " です。\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "引数 $i は: " . $arg_list[$i] . " です。\n";
}
}
foo(1, 2, 3);
?>
上の例の出力は以下となります。
引数の数: 3 二番目の引数は: 2 です。 引数 0 は: 1 です。 引数 1 は: 2 です。 引数 2 は: 3 です。
例2 func_get_args() での引数の参照渡しと値渡しの例
<?php
function byVal($arg) {
echo 'As passed : ', var_export(func_get_args()), PHP_EOL;
$arg = 'baz';
echo 'After change : ', var_export(func_get_args()), PHP_EOL;
}
function byRef(&$arg) {
echo 'As passed : ', var_export(func_get_args()), PHP_EOL;
$arg = 'baz';
echo 'After change : ', var_export(func_get_args()), PHP_EOL;
}
$arg = 'bar';
byVal($arg);
byRef($arg);
?>
上の例の出力は以下となります。
注意:
PHP 8.0.0 以降における func_*() 関数ファミリは、名前付き引数に関しては、ほぼ透過的に動作するはずです。つまり、渡された全ての引数は位置を指定したかのように扱われ、引数が指定されない場合は、デフォルト値で置き換えられるということです。 この関数は、未知の名前付きの可変長引数を無視します。 未知の名前付き引数は、可変長引数を通じてのみアクセスできます。
注意:
引数をリファレンス渡しにすると、その引数への変更がすべてこの関数の返り値に反映されます。 PHP 7 からは、引数が値渡しされた場合には現在の値も返されるようになりました。
注意: この関数は、渡された引数のみのコピーを返します。 デフォルトの(渡されていない)引数については考慮しません。