没想到,我已经这么老了.
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