首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

func_get_arg

(PHP 4, PHP 5, PHP 7)

func_get_arg - 从参数列表中返回一个项目

描述

代码语言:javascript
复制
mixed func_get_arg ( int $arg_num )

从用户定义的函数的参数列表中获取指定的参数。

该函数可以与func_get_args()和func_num_args()一起使用,以允许用户定义的函数接受可变长度参数列表。

参数

arg_num

参数偏移量。函数参数从零开始计数。

返回值

返回指定的参数,或出错时返回FALSE

Changelog

版本

描述

5.3.0

该功能现在可以用于参数列表中。

5.3.0

如果通过调用include或require从调用文件中的函数内包含的文件的最外层范围调用此函数,它现在会生成警告并返回FALSE。

Errors/Exceptions

如果从用户定义的函数之外调用,或者如果arg_num大于实际传递的参数数量,则会生成警告。

示例

Example #1 func_get_arg() example

代码语言:javascript
复制
<?php
function foo()
{
     $numargs = func_num_args();
     echo "Number of arguments: $numargs\n";
     if ($numargs >= 2) {
         echo "Second argument is: " . func_get_arg(1) . "\n";
     }
}

foo(1, 2, 3);
?>

上面的例子将输出:

代码语言:javascript
复制
Number of arguments: 3
Second argument is: 2

Example #2 func_get_arg() example before and after PHP 5.3

代码语言:javascript
复制
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之前的输出:

代码语言:javascript
复制
'Second arg'

在PHP 5.3和更高版本中输出:

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

Example #3 func_get_arg() example of byref and byval arguments

代码语言:javascript
复制
<?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开始,如果参数是按值传递的,那么当前值也会被返回。

注意:此函数仅返回传递参数的副本,并且不包含默认(未传递)参数。

另请参阅

  • ... syntax in PHP 5.6+
  • func_get_args()
  • func_num_args()

← forward_static_call

func_get_args →

扫码关注腾讯云开发者

领取腾讯云代金券