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