1. 程式人生 > >PHP鬆散比較與嚴格比較的區別詳解

PHP鬆散比較與嚴格比較的區別詳解

在PHP中相等的比較有兩種,鬆散比較和嚴格比較,當使用鬆散比較時,如果進行比較的兩個運算元型別不同,那麼會對運算元進行適當的型別轉換,如果轉換後的值相同則認為兩個運算元相等。而使用嚴格比較時,如果兩個運算元的型別不同,就認為是不想等的,如果型別相同且值也相同才會認為兩個運算元相等。

        下面是PHP官網上鬆散比較和嚴格比較對比的兩個表格。

PHP 型別比較表

以下的表格顯示了 PHP 型別比較運算子在鬆散和嚴格比較時的作用。該補充材料還和型別戲法的相關章節內容有關。同時,大量的使用者註釋和 » BlueShoes

 的工作也給該材料提供了幫助。

在使用這些表格之前,需要明白變數型別及它們的意義。例如,"42" 是一個字串而 42 是一個整數FALSE 是一個布林值而 "false" 是一個字串

Note:

HTML 表單並不傳遞整數、浮點數或者布林值,它們只傳遞字串。要想檢測一個字串是不是數字,可以使用is_numeric() 函式。

Note:

在沒有定義變數 $x 的時候,諸如 if ($x) 的用法會導致一個 E_NOTICE 級別的錯誤。所以,可以考慮用 

empty() 或者 isset() 函式來初始化變數。

 

使用 PHP 函式對變數 $x 進行比較
表示式 gettype() empty() is_null() isset() boolean : if($x)
$x = ""; string TRUE FALSE TRUE FALSE
$x = null; NULL TRUE
TRUE FALSE FALSE
var $x; NULL TRUE TRUE FALSE FALSE
$x is undefined NULL TRUE TRUE FALSE FALSE
$x = array(); array TRUE FALSE TRUE FALSE
$x = false; boolean TRUE FALSE TRUE FALSE
$x = true; boolean FALSE FALSE TRUE TRUE
$x = 1; integer FALSE FALSE TRUE TRUE
$x = 42; integer FALSE FALSE TRUE TRUE
$x = 0; integer TRUE FALSE TRUE FALSE
$x = -1; integer FALSE FALSE TRUE TRUE
$x = "1"; string FALSE FALSE TRUE TRUE
$x = "0"; string TRUE FALSE TRUE FALSE
$x = "-1"; string FALSE FALSE TRUE TRUE
$x = "php"; string FALSE FALSE TRUE TRUE
$x = "true"; string FALSE FALSE TRUE TRUE
$x = "false"; string FALSE FALSE TRUE TRUE

 

鬆散比較 ==
  TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
TRUE TRUE FALSE TRUE FALSE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE
FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
1 TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
0 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE TRUE
-1 TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
"1" TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE
"0" FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
"-1" TRUE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
NULL FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
array() FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
"php" TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE