在PHP7中,我只希望参数中包含数组,但与有什么区别
function exampleA(array $a, array $b)
{
}
和
function exampleB($a = array(), $b = array())
{
}
不确定我应该使用哪一个。
评论不错,但我想我们需要一个答案。
使用array $a
的exampleA()
强制参数为array
类型,如果不是,则抛出可捕获的错误:
exampleA();
exampleA(1, 'A');
两种产量:
可捕获的致命错误:传递给exampleA()的参数1必须是数组类型,没有给定,在X行的文件中调用,并在X行文件中定义
而在exampleB()
中使用$a = array()
:
function exampleB($a = array(), $b = array())
{
var_dump(get_defined_vars());
}
当没有提供值时,将默认值设置为空数组:
exampleB();
收益率:
array(2) { ["a"]=> array(0) { } ["b"]=> array(0) { } }
然而,当提供值时,无论类型如何,都会使用这些值:
exampleB(1, 'A');
收益率:
array(2) { ["a"]=> int(1) ["b"]=> string(1) "A" }