PHP在数组参数方面的差异


PHP difference in array parameters

在PHP7中,我只希望参数中包含数组,但与有什么区别

function exampleA(array $a, array $b)
{
}

function exampleB($a = array(), $b = array())
{
}

不确定我应该使用哪一个。

评论不错,但我想我们需要一个答案。

使用array $aexampleA()强制参数为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" }