[英]What is the difference between isset($var) == “Test” and isset($var) && $var == 'Test"
isset($var) == "Test"
和isset($var) && $var == 'Test"
什么區別?
第一個沒有道理。 如您所見, isset
返回一個布爾值。 所以isset($var) == "Test"
正如我所說的針對字符串評估布爾值。
通過評估isset($var) && $var == 'Test'
PHP首先檢查是否定義了變量$ var,然后檢查該值是否等於字符串'test'。
僅調用$var == 'Test
如果不確保已設置它,將導致出現'Undefined variable'的提示。 如果您不確定並且不希望出現噪音日志,則可以使用isset進行檢查。
這是一個簡短的例子:
$var = "Chuck Test";
var_dump(isset($var)); // bool(true)
var_dump(isset($undefined)); // bool(false)
var_dump(isset($var) == "Chuck Test"); // bool(true)
var_dump(isset($var) && $var == "Chuck Test"); // bool(true)
var_dump(isset($undefined) == "Chuck Test"); // bool(false)
var_dump(isset($undefined) && $undefined == "Chuck Test"); // bool(false)
看起來它們是等效的,但它們不是:
var_dump(isset($var) == "Chuck Testa"); // bool(true) !!!
var_dump(isset($var) && $var == "Chuck Testa"); // bool(false)
因為isset()返回true
或false
,並且將非空字符串與true
進行比較將得出true
。
因此最好使用isset($var) && $var == "Test"
變體,因為它可以實現您的期望。
如果設置了變量,則函數isset()
返回true(布爾值)。 現在,當您比較布爾值==“ Test”時,它是假的。 因此,要檢查變量是否已設置並具有'Test'的值,應使用isset($var) && $var == 'Test'
。 但是我不明白為什么你不應該做$ var =='Test'。 解釋器會這樣抱怨未初始化的變量嗎?
閱讀下面的內容,問任何問題,如果你有什么不明白的功能isset
實際上做: http://php.net/manual/en/function.isset.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.