我看到函数调用前面有一个at符号来关闭警告。今天我正在浏览一些代码,发现了这个:
$hn = @$_POST['hn'];
这会有什么用处?
答案 0 :(得分:68)
@
是PHP中的错误抑制运算符。
PHP支持一个错误控件 operator:at符号(@)。什么时候 在PHP中添加任何表达式 可能生成的错误消息 通过该表达式将被忽略。
查看:强>
在您的示例 中,它在变量名称之前使用,以避免出现E_NOTICE
错误。如果在$_POST
数组中,则未设置hn
键;它会抛出E_NOTICE
条消息,但在此处使用@
来避免E_NOTICE
。
请注意,您也可以将此行放在脚本之上,以避免E_NOTICE
错误:
error_reporting(E_ALL ^ E_NOTICE);
答案 1 :(得分:11)
如果未设置$ _POST ['hn'],则不会发出警告。
答案 2 :(得分:7)
所有这些意味着,如果没有定义$ _POST ['hn'],那么PHP将仅向$ hn分配NULL,而不是抛出错误或警告。
答案 3 :(得分:3)
如果未定义$ _POST ['something'],它会禁止警告。
答案 4 :(得分:1)
其他人忘记提及的是,除了忽略NOTICE之外,变量将设置为NULL
。