繁体   English   中英

声明一个可选的数组参数

[英]Declaring an optional array argument

我想知道将默认数组值设置为空数组或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对两者都有效,但是null的foreach循环不能很好地工作,各种数组函数也会失败。

您注意到的是正确的:只有在声明中添加= null才能为typehinted参数传递null 这不仅适用于数组,也适用于对象。 在PHP中,PHP无法创建一个强制的类型化参数,但可以为null。 只要在声明中添加=null ,就可以传递null但也可以省略参数。

如果你在空数组或null之间没有逻辑上的区别,我会选择第一种默认为空数组的方法。 那么至少你会知道输入总是一个数组。 我认为这增加了函数实现者和使用它的程序员的清晰度。 但我想这只是一种意见,甚至不是一种强烈意见。

我的主要建议是不要让论证成为可选的。 根据我的经验,这将使这些函数的使用不清楚,特别是随着代码的增长和更多的参数的添加。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM