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

jha*_*Pac 2 html php forms post

在用户刷新浏览器后,我正在寻找不同的方法来将用户的输入保存为表格,然后我发现:

value="<?php echo @$_POST['blah'];?>">
Run Code Online (Sandbox Code Playgroud)

而且我也看到了如下内容:

value="<?php echo $_POST['blah'];?>">
Run Code Online (Sandbox Code Playgroud)

他们似乎都在做同一件事。$ _POST数组前面的@符号的含义是什么?一种方法优先于另一种方法吗?

cin*_*ada 5

@是PHP的错误控制运算符。基本上,将其放在表达式(例如数组访问或函数调用)之前会抑制通常会生成的任何错误。从功能上来说,没有什么区别,只是警告/通知的生成,记录或显示方式(取决于您的设置)。

在这种情况下,如果'blah'未在$ _POST数组中定义,则第一种形式(带有@)将不会生成通知,而第二种形式将产生通知。

至于首选的东西,根据我的经验@,通常不鼓励使用任何会抑制错误的东西-更好的做法是主动进行先检查。除其他原因外,PHP文档提供了对此提防的原因:

警告:目前,“ @”错误控制运算符前缀甚至将针对严重错误禁用错误报告,这些错误将终止脚本执行。除其他外,这意味着如果您使用“ @”抑制某个功能的错误,并且该功能不可用或输入错误,该脚本将在那里死掉,而没有任何指示。

TL; DR:它可以抑制错误,除非您有充分的理由,否则通常不建议这样做。最好主动。