PHP的array_key_exists - 在数组上使用@是否可行?

时间:2012-08-29 05:27:07

标签: php performance

我想知道简单地使用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 ...]
}

看起来这样既有效率又不那么罗嗦,但也许它会引入我尚未看到的细微问题或边缘情况。

这种方法有哪些潜在的问题?

2 个答案:

答案 0 :(得分:2)

最大的问题是数组中的值可能是假的。

如果$array[key] === false则第一种情况会进入if,但第二种情况则不会。

答案 1 :(得分:2)

顺便说一句,你也可以使用isset()

PHP中的错误抑制操作符也会将其减慢很多,大约是通常速度的一半。

最后,你最终会遇到一个你正在压制错误的案例,并发现你输了错误并且$aray也不存在,你甚至都找不到,因为你阻止了所有错误。< / p>