在 PHP 中,可以编写一个能够接受具有可变元素数量的参数列表的函数。要声明变量参数列表,参数名称前面加上 “...”(三个点)符号。传递的值将收集到具有参数名称的数组中。
function myfunction(...$arg) {
Statement1;
Statement2;
}
要调用此类函数,请在括号中放入任意数量的逗号分隔值。
myfunction(v1, v2, v3, . . . , vn);
函数中声明的形参是传递的所有值的数组。我们使用任何适当的 built_in 数组函数来执行该过程。
例
在下面的示例中,用户定义的函数 myfunction() 能够接收可变数量的值并找到它们的平均值。
<?php
function myfunction(...$numbers) {
$avg = array_sum($numbers)/count($numbers);
return $avg;
}
$avg = myfunction(5, 12, 9, 23, 8);
echo "average = $avg";
?>
它将产生以下输出 -
average = 11.4
尝试更改传递的数组的大小,然后再次运行该程序。
您可以使用 foreach 循环遍历函数内的数组。该函数可以在可变长度参数之前具有任何位置参数。从接收到的值中,将首先填充位置参数,将其他参数复制到数组中。
例
<?php
function myfunction($x, ...$numbers) {
echo "First number: $x" . PHP_EOL;
echo "Remaining numbers: ";
foreach ($numbers as $n) {
echo "$n ";
}
}
myfunction(5, 12, 9, 23, 8, 41);
?>
它将产生以下输出 -
First number: 5
Remaining numbers: 12 9 23 8 41
Remaining numbers: 12 9 23 8 41
可变参数函数
可以处理函数的可变数量的参数,即使没有 “...”语法。PHP 有 built_in 函数,如 func_num_args()、func_get_arg() 和 func_get_args(),它们可以用于类似的结果。
函数 | 描述 |
---|---|
func_num_args() | 返回传递给函数参数的数。 |
func_get_arg() | 从参数列表中返回一个项目 |
func_get_args() | 返回一个包含函数的参数列表的数组 |
例子
上面的变量参数示例可以使用这些函数重写,如下所示 -
<?php
function myfunction() {
$sum = 0;
foreach (func_get_args() as $n) {
$sum += $n;
}
return $sum;
}
echo myfunction(5, 12, 9, 23, 8, 41);
?>
它将产生以下输出 -
98
例子
此程序打印传递给函数的所有数字 -
<?php
function myfunction() {
$len = func_num_args();
echo "Numbers : ";
$i=0;
for ($i=0; $i<$len; $i++)
echo func_get_arg($i) . " ";
}
myfunction(5, 12, 9, 23, 8, 41);
?>
它将产生以下输出 -
Numbers : 5 12 9 23 8 41