Fork me on GitHub

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