'At' symbol before variable name in PHP: @$_POST

前端 未结 4 2032
梦谈多话
梦谈多话 2020-12-03 00:34

I\'ve seen function calls preceded with an at symbol to switch off warnings. Today I was skimming some code and found this:

$hn = @$_POST[\'hn\'];

相关标签:
4条回答
  • 2020-12-03 00:59

    It suppresses warnings if $_POST['something'] is not defined.

    0 讨论(0)
  • 2020-12-03 01:05

    All that means is that, if $_POST['hn'] is not defined, then instead of throwing an error or warning, PHP will just assign NULL to $hn.

    0 讨论(0)
  • 2020-12-03 01:06

    The @ is the error suppression operator in PHP.

    PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.

    See:

    • Error Control Operators
    • Bad uses of the @ operator

    Update:

    In your example, it is used before the variable name to avoid the E_NOTICE error there. If in the $_POST array, the hn key is not set; it will throw an E_NOTICE message, but @ is used there to avoid that E_NOTICE.

    Note that you can also put this line on top of your script to avoid an E_NOTICE error:

    error_reporting(E_ALL ^ E_NOTICE);
    
    0 讨论(0)
  • 2020-12-03 01:06

    It won't throw a warning if $_POST['hn'] is not set.

    0 讨论(0)
提交回复
热议问题