php 三个点的用法 function fun (...$arr){}

分享于:2020-12-07 17:18:07

详细说明 : http://nl1.php.net/manual/zh/functions.arguments.php#functions.variable-arg-list

in PHP 5.6+

可变数量的参数列表

PHP 在用户自定义函数中支持可变数量的参数列表。由 ... 语法实现。

Note还可以使用以下函数来获取可变参数 func_num_args()、 func_get_arg() 和 func_get_args(),不建议使用此方式,请使用 ... 来替代。

包含 ... 的参数,会转换为指定参数变量的一个数组,见以下示例:


Example #8 使用 ... 来访问变量参数


<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>


以上例程会输出:

10


也可以使用 ... 语法来传递 array 或 Traversable 做为参数到函数中:


Example #9 使用 ... 来传递参数


<?php
function add($a, $b) {
  return $a + $b;
}

echo add(...[1, 2])."\n";

$a = [1, 2];
echo add(...$a);
?>


以上例程会输出:

3
3


你可以在 ... 前指定正常的位置参数。在这种情况下,只有不符合位置参数的尾部参数才会被添加到 ... 生成的数组中。


你也可以在 ... 标记前添加一个 类型声明。如果存在这种情况,那么 ... 捕获的所有参数必须是提示类的对象。