PHP';s array_key_exists-在数组访问上使用@是一个可行的替代方案


PHP's array_key_exists - is using @ on the array access a viable alternative?

我想知道简单地使用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,但第二种情况不会。

相关文章: