PHP函数中可变变量的参数列表以及三个点语法

最近在学习golang的时候,发现参数可以可以这样写params ...string,于是就想到php中的这种传输方式,
在php中有如下两个方法:
func_get_arg():返回参数列表的某一项
eg:

function foo()
{
     $numargs = func_num_arg(1);
}

foo (1, 2, 3);//输出结构为 2,当我们不知道参数的长度的时候可以配合func_num_args()来时用获取参数的长度

func_get_args():返回一个包含函数参数列表的数组
eg:

function foo()
{
     $numargs = func_num_arg(1);
}

foo (1, 2, 3);
/*结果输出为:
array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}*/

那么其实在参数中以...$params这种形式的参数就和上面的func_get_args()方法很类似,不同的是传的参数是一个数组时,看下面的例子:

function foo_args(...$params)
{
   var_dump(func_get_args());
   echo PHP_EOL;
   var_dump($params);
}
foo_args(1,2,3,4);//会发现两种输出的结果是一致的

function foo($params)
{
    var_dump(...$params);
}
foo([1,2,3]);
/*
 *这样的形式打印参数的时候处会出现
 * int(1)
 * int(2)
 * int(3)
 */
添加新评论