Php 声明可选数组参数
我想知道在将默认数组值设置为空数组或NULL时是否有任何区别 例如:Php 声明可选数组参数,php,arrays,Php,Arrays,我想知道在将默认数组值设置为空数组或NULL时是否有任何区别 例如: function arrayTest(array $array = array()) { if(!empty($array)) { // Do something } } 或 我注意到第一个示例不允许传递NULL值,第二个示例允许传递NULL值,因为类型转换 还有其他区别吗?应该使用哪一个?另一个区别是,如果不传递参数,它将默认为array()或null,这是两个非常不同的值。当然,你可以检查
function arrayTest(array $array = array()) {
if(!empty($array)) {
// Do something
}
}
或
我注意到第一个示例不允许传递NULL值,第二个示例允许传递NULL值,因为类型转换
还有其他区别吗?应该使用哪一个?另一个区别是,如果不传递参数,它将默认为
array()
或null
,这是两个非常不同的值。当然,你可以检查一下,但你需要考虑一下empty
对这两种方法都有效,但是foreach循环overnull
不会很好地工作,各种数组函数也会失败
您注意到的是正确的:仅当您将=null
添加到声明中时,才能为类型提示参数传递null
。这不仅适用于数组,也适用于对象。在PHP中,PHP无法生成强制但可以为null的typehinted参数。只要将=null
添加到声明中,就可以传递null
,但也可以忽略参数
如果对您来说,空数组和null之间没有逻辑上的区别,我会选择默认为空数组的第一种方法。然后,至少您会知道输入始终是一个数组。我认为这将为函数的实现者和使用它的程序员增加清晰度。但我想这只是一个观点,甚至不是一个强有力的观点
我的主要建议是,根本不要让这个论点成为可选的。根据我的经验,这将使此类函数的使用变得不明确,尤其是在代码增长和添加更多参数的情况下
function arrayTest(array $array = NULL) {
if(!empty($array)) {
// Do something
}
}