php的剩余参数

没想到,我已经这么老了.
PHP在用户自定义函数中支持可变数量的参数列表。在 `PHP 5.6` 及以上的版本中,由 ... 语法实现;在 PHP 5.5 及更早版本中,使用函数 `func_num_args()`,`func_get_arg()`,和 `func_get_args()` 。

代表全体参数

1
2
3
4
5
function sum(...$numbers) {
dump($numbers);
}

sum(1, 2, 3, 4);

这里的$numbers的结果就是一个数组;

解压一个数组

1
2
3
4
5
6
7
8
function add($a, $b) {
return $a + $b;
}

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

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

只能用在参数的最后

1
2
3
4
5
6
7
8
9
function sum($header,...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $header.$acc;
}

echo sum('结果是:', 1, 2, 3, 4);

打印结果: 结果是:10

PHP5.6之前的操作

1
2
3
4
5
6
7
8
9
function sum() {
$acc = 0;
foreach (func_get_args() as $n) {
$acc += $n;
}
return $acc;
}

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

说明

在ES6中也有相似的用法…

http://php.net/manual/zh/functions.arguments.php