func_get_arg

(PHP 4, PHP 5, PHP 7)

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

説明

func_get_arg ( int $arg_num ) : mixed

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

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

パラメータ

arg_num

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

返り値

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

変更履歴

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

エラー / 例外

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

例1 func_get_arg() の例

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

foo(123);
?>

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

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

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

test.php
<?php
function foo() {
    include 
'./fga.inc';
}

foo('First arg''Second arg');
?>

fga.inc
<?php

$arg 
func_get_arg(1);
var_export($arg);

?>

PHP 5.3 より前のバージョンでの出力は、このようになります。

'Second arg'

PHP 5.3 以降のバージョンでの出力は、このようになります。

Warning: func_get_arg():  Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc on line 3
false

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

上の例の PHP 7 での出力は、このようになります。


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

上の例の PHP 5 での出力は、このようになります。


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

注意

注意:

この関数は、 カレントスコープに依存してパラメータの詳細を決定しますので、 5.3.0 より前のバージョンでは関数パラメータとして使用することができません。 もし、この値を渡さなければならない場合、戻り値を変数に割り当て、 その変数を渡してください。

注意:

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

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

参考