func_get_arg( int $arg_num ):从用户自定义函数的参数列表中获取某个指定的参数
func_get_args( void ):获取函数参数列表的数组。返回一个数组,其中每个元素都是目前用户自定义函数的参数列表的相应元素的副本。
func_num_args( void ) 获取传递给函数的参数的数目。
1、func_get_arg
(PHP 4, PHP 5)
mixed func_get_arg ( int $arg_num )
从用户自定义函数的参数列表中获取某个指定的参数
arg_num:参数的偏移量。函数的参数是从0开始计数的。
返回值:返回指定的参数,错误则返回FALSE。
错误/异常:当在自定义函数的外面调用的该函数的时候会发出一个警告,或者是当 arg_num比实际传入的参数的数目大的时候也会发出一个警告。
Example #2func_get_arg() PHP 5.3 前后对比的例子
test.php
function foo() {
include'./fga.inc';
}
foo('First arg', 'Second arg');
?>
fga.inc
$arg = func_get_arg(1);
var_export($arg);
?>
PHP 5.3 版本之前的输出:'Secondarg'。
PHP 5.3 和之后的版本的输出:Warning:func_get_arg(): Called from the global scope - no function
context in /home/torben/Desktop/code/ml/fga.inc online 3 false
Example #3func_get_arg() example of byref and byvalarguments
function byVal($arg){
echo 'Aspassed :',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 'Aspassed :',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 : 'bar'
As passed : 'bar'
Afterchange : 'baz'
注释
Note:
因为函数依赖于当前作用域以确定参数的细节,所以在 5.3.0以前的版本中不能用作函数的参数。如必须传递此值时,可将结果赋与一个变量,然后用此变量进行传递。
Note:
如果参数以引用方式传递,函数对该参数的任何改变将在函数返回后保留。
Note:This function returns a copy of the passedarguments only, and does not accountfor default (non-passed) arguments.
2、func_get_args()
func_get_args(PHP4, PHP 5)
func_get_args — 返回一个包含函数参数列表的数组
说明
array func_get_args ( void )
获取函数参数列表的数组。
该函数可以配合func_get_arg() 和func_num_args() 一起使用,从而使得用户自定义函数可以接受自定义个数的参数列表。
返回值:返回一个数组,其中每个元素都是目前用户自定义函数的参数列表的相应元素的副本。
错误/异常:在用户自定义函数外调用则会出现错误警告。
范例
Example#1func_get_args() 例子
function foo()
{
$numargs = func_num_args();
echo "Number of arguments:$numargs
\n";
if ($numargs >= 2) {
echo "Secondargument is: " .func_get_arg(1) . "
\n";
}
$arg_list = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo "Argument $iis: " .$arg_list[$i] . "
\n";
}
}
foo(1, 2, 3);
?>
以上例程会输出:
Number ofarguments: 3
Second argumentis: 2
Argument 0 is:1
Argument 1 is:2
Argument 2 is:3
Example #2PHP 5.3前后使用 func_get_args() 在的对比
test.php
function foo() {
include './fga.inc';
}
foo('First arg','Second arg');
?>
fga.inc
$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 globalscope - nofunction context in /home/torben/Desktop/code/ml/fga.inc on line 3false
Example #3func_get_args() example of byref and byval arguments
functionbyVal($arg) {
echo 'As passed : ',var_export(func_get_args()), PHP_EOL;
$arg = 'baz';
echo 'After change : ',var_export(func_get_args()), PHP_EOL;
}
functionbyRef(&$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);
?>
以上例程会输出:
As passed : array(
0 => 'bar',
)
After change :array (
0 => 'bar',
)
As passed : array(
0 => 'bar',
)
After change :array (
0 => 'baz',
)
注释
Note:
因为函数依赖于当前作用域以确定参数的细节,所以在 5.3.0以前的版本中不能用作函数的参数。如必须传递此值时,可将结果赋与一个变量,然后用此变量进行传递。
Note:
如果参数以引用方式传递,函数对该参数的任何改变将在函数返回后保留。
Note:该函数仅仅是返回传递参数的一个副本,并且不包含没有传入的默认参数。
3、func_num_args
intfunc_num_args ( void ) 获取传递给函数的参数的数目。 (PHP 4, PHP 5)
错误/异常:如果在用户定义函数的外部调用时产生一个警告。
范例
Example #1func_num_args() example
function foo()
{
$numargs = func_num_args();
echo "Number of arguments:$numargs\n";
}
foo(1, 2, 3);
?>
以上例程会输出:
Number of arguments: 3
Example #2func_num_args() example beforeand after PHP 5.3
test.php
function foo() {
include './fna.php';
}
foo('First arg', 'Second arg');
?>
fna.php
$num_args = func_num_args();
var_export($num_args);
?>
Output previous to PHP 5.3:
2
Output in PHP 5.3 and later will besomething similar to:
Warning: func_num_args(): Called from the global scope - nofunction
context in/home/torben/Desktop/code/ml/fna.php on line 3
-1
注释
Note:
因为函数依赖于当前作用域以确定参数的细节,所以在 5.3.0以前的版本中不能用作函数的参数。如必须传递此值时,可将结果赋与一个变量,然后用此变量进行传递。