最近在学习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)
*/