我想知道简单地使用PHP的错误抑制语法是否是array_key_exists的一种更快、更简单的替代方法,在array_key_exists中,不确定是否存在特定的键。
也就是说,而不是:
if (array_key_exists($array, $key)) {
$myval = $array[$key];
[... do something with $myval ...]
}
简单使用:
if ($myval = @$array[$key]) {
[... do something with $myval ...]
}
看起来这既高效又不那么冗长,但也许它引入了我还没有看到的微妙问题或边缘案例。
这种方法的潜在问题是什么?
BTW您也可以使用isset()
。
PHP中的错误抑制操作符也使它的速度减慢了很多,大约是通常速度的一半。
最后,你会遇到一种情况,你正在压制错误,并发现你打字错误,$aray
也不存在,你甚至永远不会发现,因为你正在阻止所有错误。
最大的问题是数组中的值可能是错误的。
如果$array[key] === false
,则第一种情况将进入if
,但第二种情况不会。