首页 > 技术分享 > 原生PHP
收藏

PHP函数func_get_arg、func_get_args用法,PHP...三个点的用法

02/15 12:20
大潇博客 原创文章,转载请标明出处

func_get_args为PHP内置函数,放在用户自定义函数中使用,作用是计数,当用户调用自定义函数时,返回所传参数的个数。


func_get_arg(int arg_num)同样为PHP内置函数,返回调用自定义函数时,所传参数列表的第“arg_num”个参数的值,参数从0开始。


注意:

1、使用func_get_arg函数时,必须传参“arg_num”,值为大于等于0的正整数,否则会抛出警告;

2、当“arg_num”值大于所传参数的数量时,会抛出警告;

3、func_get_args和func_get_arg在自定义函数外使用时,会抛出警告


下面举例说明:

//参数有默认值,所以调用时,所有参数都为非必传状态

function sum($a='a',$b='b',$c='c'){

$number = func_get_args();

var_dump($number); //打印数组,比如:array(2) { [0]=> int(111)  [1]=> int(222) }

echo PHP_EOL;

echo "一共传了".count($number)."个参数".PHP_EOL//返回2

if(count($number)>2){

echo "第二个参数是:".func_get_arg(1).PHP_EOL; //func_get_arg,必须指定需要第几个值

}

//循环输出所有参数

for($i=0;$i<count($number);$i++){

$index = $i+1;

echo "第".$index."个参数的值是:".func_get_arg($i).PHP_EOL;

}

}

sum(111,222); //调用上面的方法


通过上面的例子可清晰理解:

func_get_args()返回调用函数时传的参数,所组成的组数,下标从0开始;

func_get_arg(int arg_num)返回具体的值,通过arg_num做为下标指定,从0开始;


在自定义函数时,甚至可以不提前定义参数,比如:

//自定义函数,没有定义参数

function sum(){

$number = func_get_args();

var_dump($number);

echo "一共传了".count($number)."个参数"; //3个

}

sum(111,222,333); //调用自定义函数,传入三个参数


在实际开发和生产中,灵活运用这两个函数,可以起到非常理想的效果

比如创建MySQL连接类时,不必事先在构造中定义参数,可通过传入的参数信息创建连接,如下代码:

Class DB{

private $host;

private $user;

private $pwd;

public function __construct(){

$args = func_get_args();

$this->host = $args[0];

$this->user = $args[1];

$this->pwd = func_get_arg(2);

$this->connect();

}

...... 省略 ......

}


PHP中“...”三个点的用法

在PHP5.6之后,func_get_arg函数的功能,可由“...”语法实现。

在自定义函数时,用法如下:

function abc(...$a){

//var_dump($a);

//打印$a的结果,等同于func_get_args()函数返回的值

//比如:array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) }

$acc = 0;

foreach($a as $val){

$acc = $acc + $val;

}

return $acc;

}

echo abc(1);  //输出1

echo PHP_EOL;

echo abc(1,2,3,4,5); //1+2+3+4+5,输出15

echo PHP_EOL;


调用方法如下:

function def($a, $b, $c){

echo $a + $b + $c;

}

echo def(1,2,3); //输出6

echo PHP_EOL;

$a = [1,2,3,4];

echo def(...$a); //输出6


总结:func_get_arg、func_get_args和“...”语法,让自定义函数接受可变数量的参数,参数将作为数组传递给定义的变量。


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311