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