PHP中变量名前的'at'符号:@ $ _ POST

Maj*_*our 51 php error-handling operators

我已经看到函数调用前面有一个at符号来关闭警告.今天我在浏览一些代码,发现了这个:

$hn = @$_POST['hn'];
Run Code Online (Sandbox Code Playgroud)

这会有什么用处?

Sar*_*raz 68

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

PHP支持一个错误控制操作符:at符号(@).当在PHP中添加表达式时,将忽略该表达式可能生成的任何错误消息.

看到:

更新:

在您的示例中,它在变量名称之前使用,以避免E_NOTICE错误.如果在$_POST数组中,hn则未设置密钥; 它会抛出一条E_NOTICE消息,但@在那里用来避免这种情况E_NOTICE.

请注意,您还可以将此行放在脚本之上以避免E_NOTICE错误:

error_reporting(E_ALL ^ E_NOTICE);
Run Code Online (Sandbox Code Playgroud)

  • 其他人忘记提到的是,除了忽略 NOTICE 之外,该变量还将被设置为“NULL”。 (2认同)

Tys*_*est 11

如果未设置$ _POST ['hn'],它不会发出警告.


Sen*_*rco 7

所有这一切意味着,如果没有定义$ _POST ['hn'],那么PHP将仅向$ hn分配NULL,而不是抛出错误或警告.