这在没有警告的情况下工作:
function test($a)
{
echo 1;
}
test(2, 1);
这会引起警告:
function test($a)
{
echo 1;
}
test();
如果是标准的,有什么原因吗?
最佳答案
因为在第一个示例中 test()
可能会使用 func_get_args()
来访问它的参数,所以它不应该抛出错误。
在第二个例子中,$a
不是可选的。如果您希望它是可选的,请像这样在参数签名中添加一个默认值
function test($a = 1)
{
echo 1;
}
test();
所以是的,这是默认行为,一旦您了解了上述内容,它就有意义了。
关于编辑
在编辑的第一个示例中,您将能够作为 $a
访问 2
,但是 1
可通过 func_get_args()
(或其类似函数之一,如 func_get_arg()
)访问。
关于php - 这是 PHP 的标准行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146066/