我有几个较旧的应用程序,当在E_NOTICE错误级别上运行时会抛出大量"xyz未定义"和"未定义的偏移"消息,因为没有使用isset()
和consorts 显式检查变量的存在.
我正在考虑通过它们来使它们与E_NOTICE兼容,因为关于缺失变量或偏移的通知可以是救生员,可能会获得一些微小的性能改进,并且它总体上更清洁.
但是,我不喜欢对我的代码造成数百isset()
empty()
和array_key_exists()
s的影响.它变得臃肿,变得不那么可读,没有在价值或意义上获得任何东西.
如何在没有过多变量检查的情况下构建代码,同时还兼容E_NOTICE?
PHP人民,我已经厌倦了这样做
$value = isset($arr[$key]) ? $arr[$key] : null;
Run Code Online (Sandbox Code Playgroud)
或这个
$value = array_key_exists($key, $arr) ? $arr[$key] : null;
Run Code Online (Sandbox Code Playgroud)
不要没有人告诉我这样做
$arr = array(1);
$key = 5;
$value = $arr[$key];
// Notice: Undefined offset: 5
Run Code Online (Sandbox Code Playgroud)
我得了支气管炎.不是没有人有时间f'dat.
我想能做出一个功能......
function array_get(Array $arr, $key, $default=null) {
return array_key_exists($key, $arr)
? $arr[$key]
: $default
;
}
Run Code Online (Sandbox Code Playgroud)
但这是最好的(最惯用的)方式吗?