为什么PHP在向函数传递太多参数时不抛出错误?

2022-08-30 17:49:55

我是php的n00b。我正在学习默认参数,所以我做了这个函数。

function doFoo($name = "johnny"){
    echo "Hello $name" . "<br />";
}

我打了这些电话

doFoo();
doFoo("ted");
doFoo("ted", 22);

前两个打印了预期的内容,即

Hello johnny
Hello ted

但第三次通话还打印

Hello ted

我本来以为一个错误,毕竟这个函数是为一个参数制作的,而我用两个参数来调用它。
为什么没有错误?


答案 1

PHP 不会在函数重载时引发错误。


答案 2

向函数传递比所需更多的参数并没有错

只有当您传递给几个参数时,才会收到错误。

function test($arg1) {
 var_dump($arg1);
}

test();

以上将导致以下错误:
未捕获的参数计数错误:参数太少而无法正常工作...

如果你想获取第一个参数以及传递给函数的所有其他参数,你可以这样做:

function test($arg1, ...$args) {
 var_dump($arg1, $args);
}

test('test1', 'test2', 'test3');

结果:
string(5) “test1” array(2) { [0]=> string(5) “test2” [1]=> string(5) “test3” }


推荐