簡體   English   中英

PHP 中變量名前的“At”符號:@$_POST

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

我已經看到 function 調用前面有一個 at 符號來關閉警告。 今天我瀏覽了一些代碼,發現了這個:

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

它在這里有什么好處?

@是PHP中的錯誤抑制運算符。

PHP支持一個錯誤控制操作符:at符號(@)。 當在PHP中添加表達式時,將忽略該表達式可能生成的任何錯誤消息。

看到:

更新:

在您的示例中 ,它在變量名稱之前使用,以避免在那里出現E_NOTICE錯誤。 如果在$_POST數組中,則未設置hn鍵; 它將拋出一個E_NOTICE消息,但在那里使用@來避免E_NOTICE

請注意,您還可以將此行放在腳本之上以避免E_NOTICE錯誤:

error_reporting(E_ALL ^ E_NOTICE);

如果未設置$ _POST ['hn'],它不會發出警告。

所有這一切意味着,如果沒有定義$ _POST ['hn'],那么PHP將僅向$ hn分配NULL,而不是拋出錯誤或警告。

如果未定義$ _POST ['something'],它會禁止警告。

我在 11 年后回答關於現代 php 的完整性。

自 php 7.0 以來, null 合並運算符在這種情況下是靜音警告的更直接替代方法。 ?? 運算符(除其他外)就是為此目的而設計的。

如果沒有@ ,則會顯示警告:

$ php -r 'var_dump($_POST["hn"]);'
PHP Warning:  Undefined array key "hn" in Command line code on line 1
NULL

帶有靜音警告 ( @ ) 的 output:

$ php -r 'var_dump(@$_POST["hn"]);'
NULL

使用現代 null 合並運算符 ( ?? ) 獲得相同的結果:

$ php -r 'var_dump($_POST["hn"] ?? null);'
NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM