关于php:@ $ _ POST与$ _POST有什么区别……?

What is the difference between @$_POST vs $_POST…?

本问题已经有最佳答案,请猛点这里访问。

在刷新浏览器后,我正在寻找不同的方法将用户的输入保存到表单中,我遇到了以下问题:

1
value="<?php echo @$_POST['blah'];?>">

我也看到了如下情况:

1
value="<?php echo $_POST['blah'];?>">

他们似乎都做了同样的事情。在$u post数组前面加上@符号的意义是什么?一种方式比另一种方式更受欢迎吗?


@是php的错误控制操作符。基本上,将它放在表达式(如数组访问或函数调用)之前将抑制通常会生成的任何错误。在功能上,没有区别,只是会根据您的设置生成、记录或显示什么警告/通知。

在这种情况下,如果"blah"没有在$u post数组中定义,则第一个表单(带有@)不会生成通知,而第二个表单将生成通知。

至于什么是首选,根据我的经验,@通常是不鼓励的,就像任何抑制错误的东西一样——更好的做法是积极主动地检查事物。除其他原因外,PHP文档给出了对此保持警惕的理由:

Warning: Currently the"@" error-control operator prefix will even disable error reporting for critical errors that will terminate script execution. Among other things, this means that if you use"@" to suppress errors from a certain function and either it isn't available or has been mistyped, the script will die right there with no indication as to why.

tl;dr:它抑制错误,通常不鼓励错误发生,除非你有充分的理由这样做。最好是积极主动。


@符号对邮件中的任何错误都感到意外。例如,当它未定义时,您将不会收到警告。


在php中,当放置@is以防止显示该部分代码中的系统错误时。