func_get_arg

引数のリストから要素をひとつ返す

説明

mixed func_get_arg(int $position)

ユーザーが定義した関数の引数リストから、指定した引数を取得します。

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

パラメータ

position

引数の位置。関数の引数はゼロから数え始めます。

戻り値

指定した引数、あるいはエラー時に false を返します。

エラー / 例外

ユーザー定義関数の外部からコールされた場合、あるいは position が実際に渡された引数の数より多い場合に警告を発生します。

例1 func_get_arg の例

<?php
function foo()
{
     $numargs = func_num_args();
     echo "引数の数は $numargs\n";
     if ($numargs >= 2) {
         echo "二番目の引数は " . func_get_arg(1) . " です。\n";
     }
}

foo(1, 2, 3);
?>

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

引数の数は 3
二番目の引数は 2 です。

例2 func_get_arg での引数の参照渡しと値渡しの例

<?php
function byVal($arg) {
    echo 'As passed     : ', var_export(func_get_arg(0)), PHP_EOL;
    $arg = 'baz';
    echo 'After change  : ', var_export(func_get_arg(0)), PHP_EOL;
}

function byRef(&$arg) {
    echo 'As passed     : ', var_export(func_get_arg(0)), PHP_EOL;
    $arg = 'baz';
    echo 'After change  : ', var_export(func_get_arg(0)), PHP_EOL;
}

$arg = 'bar';
byVal($arg);
byRef($arg);
?>

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


As passed : 'bar'
After change : 'baz'
As passed : 'bar'
After change : 'baz'

注意

注意:

PHP 8.0.0 以降における func_*() 関数ファミリは、名前付き引数に関しては、ほぼ透過的に動作するはずです。つまり、渡された全ての引数は位置を指定したかのように扱われ、引数が指定されない場合は、デフォルト値で置き換えられるということです。 この関数は、未知の名前付きの可変長引数を無視します。 未知の名前付き引数は、可変長引数を通じてのみアクセスできます。

注意:

引数をリファレンス渡しにすると、その引数への変更がすべてこの関数の返り値に反映されます。 PHP 7 からは、引数が値渡しされた場合には現在の値も返されるようになりました。

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

参考