関数の引数リストを配列として返す

# func_get_args

(PHP 4, PHP 5, PHP 7)

func_get_args — 関数の引数リストを配列として返す

### 説明

func_get_args ( void ) : array

関数の引数リストを配列で取得します。

この関数は func_num_args() および func_get_arg() と組み合わせて使用され、 これによりユーザー定義の章において可変長の引数リストを使用することができるようになります。

### 返り値

配列を返します。この配列の各要素は、 現在のユーザー定義関数の引数リストにおける対応するメンバのコピーとなります。

### 変更履歴

バージョン | 説明
--- | ---
5.3.0 | この関数はパラメータリスト内で使用できるようになりました。
5.3.0 | ある関数内で include や require を使って別のファイルを読み込んでいるときに 別のファイル側からこの関数をコールすると、警告を発生して `FALSE` を返すようになりました。

### エラー / 例外

ユーザー定義関数の外部からコールされた際に警告を発生します。

### 例

例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);
?>`

上の例の出力は以下となります。

    Number of arguments: 3
    Second argument is: 2
    Argument 0 is: 1
    Argument 1 is: 2
    Argument 2 is: 3

例2 func_get_args() の PHP 5.3 前後の例

`test.php
<?php
function 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() での引数の参照渡しと値渡しの例

`<?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 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 からは、引数が値渡しされた場合には現在の値も返されるようになりました。

> 注意: この関数は、渡された引数のみのコピーを返します。 デフォルトの（渡されていない）引数については考慮しません。

### 参考

- PHP 5.6 以降の ... 構文
- func_get_arg()
- func_num_args()
- ReflectionFunctionAbstract::getParameters()