PHP:如果(!空(arr美元[“key"])) VS如果(@ $ arr[“key"]).有什么区别吗


PHP: if (!empty($arr["key"])) VS if (@$arr["key"]). Is there any difference?

代码为

$arr = array(
 "key" => array(
    "id" 
  )
);

我已经做了速度测试-> 10k次重复这两个语句,平均时间都是0.000002。如果变量不存在,Both不会生成警告。

我在问,有什么区别吗?

我应该在我的脚本中更好地使用哪个?

不同之处在于,使用empty函数,您可以显式检查您试图在此数组中访问的键是否存在,并防止在您试图访问不存在的数组键时出现错误消息。

数组访问前的@只是说隐藏这一行生成的所有错误。因此,无论键是否存在于您的数组中,您只需说"如何关心是否有任何错误-隐藏它",正确的方法是使用emptyisset函数首先检查数组键是否存在。

永远不会隐藏错误,用正确的方式访问数组来防止错误。