我是php的n00b。我正在学习默认参数,所以我做了这个功能。
function doFoo($name = "johnny"){
echo "Hello $name" . "<br />";
}
我做了这些电话
doFoo();
doFoo("ted");
doFoo("ted", 22);
前两个印刷的是预期的,即
Hello johnny
Hello ted
但是第三个电话也打印了
Hello ted
在为一个参数设置所有函数之后,我期待一个错误,而我用两个参数调用它 为什么没有错误?
答案 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);