func_get_arg(), func_get_args() 和 func_num_args() 函数

func_get_arg( int $arg_num ):从用户自定义函数的参数列表中获取某个指定的参数

func_get_args( void ):获取函数参数列表的数组。返回一个数组,其中每个元素都是目前用户自定义函数的参数列表的相应元素的副本。

func_num_args( void ) 获取传递给函数的参数的数目。

1func_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

<?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 版本之前的输出:'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

<?php

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.

 

2func_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() 例子

<?php

function foo()

{

    $numargs = func_num_args();

    echo "Number of arguments:$numargs<br/>\n";

    if ($numargs >= 2) {

        echo "Secondargument is: " .func_get_arg(1) . "<br />\n";

    }

    $arg_list = func_get_args();

    for ($i = 0; $i < $numargs; $i++) {

        echo "Argument $iis: " .$arg_list[$i] . "<br />\n";

    }

}

foo(1, 2, 3);

?>

以上例程会输出:

Number ofarguments: 3<br />

Second argumentis: 2<br />

Argument 0 is:1<br />

Argument 1 is:2<br />

Argument 2 is:3<br />

 

Example #2PHP 5.3前后使用 func_get_args() 在的对比

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 globalscope - nofunction context in /home/torben/Desktop/code/ml/fga.inc on line 3false

 

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

<?php

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:该函数仅仅是返回传递参数的一个副本,并且不包含没有传入的默认参数。

 

3func_num_args 

intfunc_num_args ( void ) 获取传递给函数的参数的数目。 (PHP 4, PHP 5)

错误/异常:如果在用户定义函数的外部调用时产生一个警告。

范例

Example #1func_num_args() example

<?php

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

<?php

function foo() {

   include './fna.php';

}

foo('First arg', 'Second arg');

?>

fna.php

<?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以前的版本中不能用作函数的参数。如必须传递此值时,可将结果赋与一个变量,然后用此变量进行传递。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值