【问题标题】:'At' symbol before variable name in PHP: @$_POSTPHP中变量名前的'At'符号:@$_POST
【发布时间】:2011-04-02 20:46:36
【问题描述】:

我见过以 at 符号开头的函数调用来关闭警告。今天我浏览了一些代码,发现了这个:

$hn = @$_POST['hn'];

它在这里有什么好处?

【问题讨论】:

标签: php error-handling operators


【解决方案1】:

@ 是 PHP 中的错误抑制运算符。

PHP 支持一种错误控制 运算符:at 符号 (@)。什么时候 添加到 PHP 中的表达式之前,任何 可能产生的错误信息 通过该表达式将被忽略。

参见:

更新:

在您的示例中,在变量名之前使用它以避免出现E_NOTICE 错误。如果在$_POST数组中,hn键没有设置;它会抛出E_NOTICE 消息,但@ 用于避免E_NOTICE

请注意,您也可以将此行放在脚本顶部以避免出现E_NOTICE 错误:

error_reporting(E_ALL ^ E_NOTICE);

【讨论】:

  • 但它用在变量名而不是函数之前。
  • 如果 $_POST 中没有设置hn,它会抛出一个通知(Notice: undefined index...)。 @ 将取消该通知。但是使用@ 是错误的。
  • 现在就明白了。谢谢你萨法拉兹。希望您的人民能尽快摆脱洪水。
  • "PHP6 Note" —— 这说的没有意义。
  • 其他人忘记提及的是,除了忽略 NOTICE 之外,变量将设置为NULL
【解决方案2】:

如果 $_POST['hn'] 没有设置,它不会抛出警告。

【讨论】:

    【解决方案3】:

    这意味着,如果 $_POST['hn'] 没有定义,那么 PHP 不会抛出错误或警告,而是将 NULL 分配给 $hn。

    【讨论】:

      【解决方案4】:

      如果 $_POST['something'] 未定义,它会抑制警告。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 2012-02-04
        • 1970-01-01
        相关资源
        最近更新 更多