func_get_args
(PHP 4, PHP 5, PHP 7)
func_get_args — 関数の引数リストを配列として返す
説明
func_get_args ( ) : array
関数の引数リストを配列で取得します。
この関数は func_num_args() および func_get_arg() と組み合わせて使用され、 これによりユーザー定義の章において可変長の引数リストを使用することができるようになります。
返り値
配列を返します。この配列の各要素は、 現在のユーザー定義関数の引数リストにおける対応するメンバのコピーとなります。
エラー / 例外
ユーザー定義関数の外部からコールされた際に警告を発生します。
例
例1 func_get_args() の例
<?phpfunction 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 5.3 前後の例
test.php<?phpfunction foo() { include './fga.inc';}foo('First arg', 'Second arg');?>fga.inc<?php$args = func_get_args();var_export($args);?>
PHP 5.3 より前のバージョンでの出力は、このようになります。
array ( 0 => 'First arg', 1 => 'Second arg', )
PHP 5.3 以降のバージョンでの出力は、このようになります。
Warning: func_get_args(): Called from the global scope - no function context in /home/torben/Desktop/code/ml/fga.inc on line 3 false
例3 func_get_args() での引数の参照渡しと値渡しの例
<?phpfunction 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 7 での出力は、このようになります。
As passed : array ( 0 => 'bar', ) After change : array ( 0 => 'baz', ) As passed : array ( 0 => 'bar', ) After change : array ( 0 => 'baz', )
上の例の PHP 5 での出力は、このようになります。
As passed : array ( 0 => 'bar', ) After change : array ( 0 => 'bar', ) As passed : array ( 0 => 'bar', ) After change : array ( 0 => 'baz', )
注意
注意:
この関数は、 カレントスコープに依存してパラメータの詳細を決定しますので、 5.3.0 より前のバージョンでは関数パラメータとして使用することができません。 もし、この値を渡さなければならない場合、戻り値を変数に割り当て、 その変数を渡してください。
注意:
引数を参照渡しにすると、その引数への変更がすべてこの関数の返り値に反映されます。 PHP 7 からは、引数が値渡しされた場合には現在の値も返されるようになりました。
注意:
この関数は、渡された引数のみのコピーを返します。 デフォルトの(渡されていない)引数については考慮しません。