在线文档教程
PHP
类和函数 | Classes and Functions

func_get_args

func_get_args

(PHP 4, PHP 5, PHP 7)

func_get_args - 返回一个包含函数参数列表的数组

描述

array func_get_args ( void )

获取函数参数列表的数组。

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

返回值

返回一个数组,其中每个元素都是当前用户定义函数参数列表的相应成员的副本。

Changelog

版本描述
5.3.0该功能现在可以用于参数列表中。
5.3.0如果通过调用include或require从调用文件中的函数内包含的文件的最外层范围调用此函数,它现在会生成警告并返回FALSE。

Errors/Exceptions

如果从用户定义的函数外部调用,则会生成警告。

示例

Example #1 func_get_args() example

<?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";     }     $arg_list = func_get_args(     for ($i = 0; $i < $numargs; $i++) {         echo "Argument $i is: " . $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

Example #2 func_get_args() example before and after 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

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

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

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

另请参阅

  • ... syntax in PHP 5.6+

  • func_get_arg()

  • func_num_args()

  • ReflectionFunctionAbstract::getParameters()

← func_get_arg

func_num_args →