@ $ _ POST与$ _POST ....有什么区别?

时间:2014-04-24 05:31:45

标签: php html forms post

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

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

我也看到了以下内容:

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

他们似乎都做同样的事情。前缀为$ _POST数组的@符号有什么意义?一种方式优于另一种方式吗?

3 个答案:

答案 0 :(得分:4)

@是PHP的error control operator。基本上,将它放在表达式(例如数组访问或函数调用)之前将抑制通常会生成的任何错误。在功能上,没有区别,只是根据您的设置生成和记录或显示哪些警告/通知。

在这种情况下,如果&#39; blah&#39;没有在$ _POST数组中定义,第一个表单(带有@)赢得了生成通知,而第二个表单将生成通知。

至于什么是首选,根据我的经验@通常不鼓励,因为任何只是抑制错误的东西 - 更好的做法是主动检查事情。除了其他原因之外,PHP文档提供了这个理由对此保持警惕:

  

警告:目前&#34; @&#34;错误控制操作符前缀甚至会禁用错误报告,以解决将终止脚本执行的严重错误。除此之外,这意味着如果你使用&#34; @&#34;为了抑制来自某个功能的错误,并且它不可用或者输入错误,脚本将在那里死亡而没有任何关于原因的指示。

TL; DR:它可以抑制错误,除非您有充分理由这样做,否则通常不鼓励这些错误。最好是积极主动。

答案 1 :(得分:2)

@符号表示POST引发的任何错误。例如,当它未定义时,您将不会收到警告。

答案 2 :(得分:0)

在Php中放置@是为了防止向我们展示我们在该部分代码中出现的系统错误。