在项目中经常会看到方法中,定义的参数 前边有 ... 这是做什么用的?
PHP传递参数中 前面的三个点是做什么用的
在php5.6 及更高的版本中 使用... 这三个点加上一个变量名实现的。
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
像 func_num_args() 和 func_get_args() 这两个变量是在5。5及更早的版本前使用。
function sum(){
return "一共传递了".func_num_args().'个参数';
}
function sum() {
$acc = 0;
foreach (func_get_args() as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
我们还可以指定类型
function total_intervals($unit, DateInterval ...$intervals) {
$time = 0;
foreach ($intervals as $interval) {
$time += $interval->$unit;
}
return $time;
}
$a = new DateInterval('P1D');
$b = new DateInterval('P2D');
echo total_intervals('d', $a, $b).' days';
// This will fail, since null isn't a DateInterval object.
echo total_intervals('d', null);
function wxc ($arg1, $arg2, ...$otherArgs){
echo '<pre>';
print_r($otherArgs);
print_r(func_get_args());
echo '</pre>';
}
// wxc (1, 2, ...array(3,4,5));
wxc (1, 2,...array(3,4,5));
/**
<pre>Array
(
[0] => 3
[1] => 4
[2] => 5
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
**/
wxc (1, 2,array(3,4,5));
/*Array
(
[0] => Array
(
[0] => 3
[1] => 4
[2] => 5
)
)
Array
(
[0] => 1
[1] => 2
[2] => Array
(
[0] => 3
[1] => 4
[2] => 5
)
)*/