PHP :( isset($ array [$ key])&& $ array [$ key])或(@ $ array [$ key])?

时间:2017-11-20 05:12:16

标签: php

如果我只对$array[$key]的非空值感兴趣,但不保证存在$array[$key]

是否有优势或偏好以单向另一种方式进行?

完整示例:

if (isset($array[$key]) && $array[$key]) {
    // Do something
}

VS

if (@$array[$key]) {
    // Do something
}

1 个答案:

答案 0 :(得分:2)

(@)错误控制操作员

  • PHP支持一个错误控制操作符:at符号(@)。什么时候 预先附加到PHP中的表达式,可能是任何错误消息 该表达式生成的内容将被忽略。
  • @ -operator仅适用于表达式。一个简单的经验法则是: 如果你能拿出某些东西的价值,你可以在前面加上@ 操作员。例如,您可以将其添加到变量中, 函数和包含调用,常量等。你不能 将它添加到函数或类定义,或有条件 诸如if和foreach之类的结构,等等。

isset - 确定变量是否已设置且不是NULL

  • 如果使用unset()取消设置变量,则不再设置该变量。 如果测试已设置为的变量,则isset()将返回FALSE 空值。另请注意,空字符(“\ 0”)不等于 PHP NULL常量。
  • 如果提供了多个参数,则isset()将返回TRUE 只有设置了所有参数。评价从左到右 一旦遇到未设置的变量,就立即停止。

检查数组键值不为空:

if(empty($fields_array[$key])) {
    //You will be here if  value does not exist or is FALSE
}