(PHP 4, PHP 5, PHP 7)
func_get_arg — 引数のリストから要素をひとつ返す
ユーザーが定義した関数の引数リストから、指定した引数を取得します。
この関数は、 func_num_args()および func_get_args()と組み合わせて使用され、これにより ユーザー定義の関数が可変長の引数リストをとることができるようになります。
arg_num
引数の位置。関数の引数はゼロから数え始めます。
指定した引数、あるいはエラー時に FALSE
を返します。
バージョン | 説明 |
---|---|
5.3.0 | この関数はパラメータリスト内で使用できるようになりました。 |
5.3.0 |
ある関数内で include や
require を使って別のファイルを読み込んでいるときに
別のファイル側からこの関数をコールすると、警告を発生して
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(1, 2, 3);
?>
上の例の出力は以下となります。
引数の数は 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 での出力は、このようになります。
上の例の PHP 5 での出力は、このようになります。
注意:
この関数は、 カレントスコープに依存してパラメータの詳細を決定しますので、 5.3.0 より前のバージョンでは関数パラメータとして使用することができません。 もし、この値を渡さなければならない場合、戻り値を変数に割り当て、 その変数を渡してください。
注意:
引数を参照渡しにすると、その引数への変更がすべてこの関数の返り値に反映されます。 PHP 7 からは、引数が値渡しされた場合には現在の値も返されるようになりました。
注意: この関数は、渡された引数のみのコピーを返します。 デフォルトの (渡されていない) 引数については感知しません。