我想知道简单地使用PHP的错误抑制语法是否更快,更简单地替代array_key_exists,而不确定是否存在特定的密钥。
即代替:
if (array_key_exists($array, $key)) {
$myval = $array[$key];
[... do something with $myval ...]
}
只需使用:
if ($myval = @$array[$key]) {
[... do something with $myval ...]
}
看起来这样既有效率又不那么罗嗦,但也许它会引入我尚未看到的细微问题或边缘情况。
这种方法有哪些潜在的问题?
答案 0 :(得分:2)
最大的问题是数组中的值可能是假的。
如果$array[key] === false
则第一种情况会进入if
,但第二种情况则不会。
答案 1 :(得分:2)
顺便说一句,你也可以使用isset()
。
PHP中的错误抑制操作符也会将其减慢很多,大约是通常速度的一半。
最后,你最终会遇到一个你正在压制错误的案例,并发现你输了错误并且$aray
也不存在,你甚至都找不到,因为你阻止了所有错误。< / p>