当我向函数传递太多参数时,为什么PHP不会抛出错误?

时间:2011-10-28 11:38:51

标签: php function methods

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

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

我做了这些电话

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

前两个印刷的是预期的,即

Hello johnny  
Hello ted

但是第三个电话也打印了

Hello ted 

在为一个参数设置所有函数之后,我期待一个错误,而我用两个参数调用它 为什么没有错误?

4 个答案:

答案 0 :(得分:18)

PHP不会在函数重载时抛出错误。

答案 1 :(得分:3)

因为PHP函数支持可变数量的参数。

答案 2 :(得分:0)

将更多的参数传递给函数没错

只有传递很少的参数,您才会出错。

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

test();

以上将导致以下错误:
未捕获的ArgumentCountError:函数的参数太少...

如果要获取第一个参数以及传递给函数的所有其他参数,则可以执行以下操作:

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

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

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

答案 3 :(得分:-2)

它应该只打印一个通知,但没有错误。 我认为您已设置错误报告,因此屏幕上不会显示通知。

尝试在代码顶部粘贴:

error_reporting(E_ALL | E_STRICT);