0

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

看起来这既更有效也更简洁,但也许它引入了我还没有看到的微妙问题或边缘情况。

这种方法的潜在问题是什么?

4

2 回答 2

2

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

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

于 2012-08-29T05:30:10.987 回答
2

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

PHP 中的错误抑制运算符也大大降低了它的速度,大约是通常速度的一半。

最后,您最终会遇到一个您正在抑制错误的情况,并发现您打错了并且$aray也不存在,您甚至永远不会发现,因为您阻止了所有错误。

于 2012-08-29T05:32:54.923 回答