簡體   English   中英

isset($ var)==“ Test”和isset($ var)&& $ var =='Test“和有什么不一樣

[英]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()返回truefalse ,並且將非空字符串與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.

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