PHP 類型比較表

以下的表格顯示了 PHP 類型比較運算符 在松散和嚴格比較時的作用。該補充材料還和 類型戲法 的相關章節(jié)內(nèi)容有關。同時,大量的用戶注釋和 ? BlueShoes 的工作也給該材料提供了幫助。

在使用這些表格之前,需要明白變量類型及它們的意義。例如,"42" 是一個字符串42 是一個整數(shù)。false 是一個布爾值而 "false" 是一個字符串

注意:

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

注意:

在沒有定義變量 $x 的時候,諸如 if ($x) 的用法會導致一個 E_NOTICE 級別的錯誤。所以,可以考慮用 empty() 或者 isset() 函數(shù)來初始化變量。

注意:

某些數(shù)值操作會導致一個特殊值,可以用常量 NAN 表示。 無論是松散還是嚴格比較,這個值和其他任意值(包括它自身,但排除 true)比較時都會產(chǎn)生 false 的結果, 例如 NAN != NANNAN !== NAN。 導致 NAN 的操作例子包括 sqrt(-1)asin(2)、 acosh(0)。

使用 PHP 函數(shù)對變量 $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 true false true false
$x = ['a', 'b']; array false false true true
$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 [] "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 false* false*
-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
[] false true false false false false false false true true false false
"php" true false false false* false false false false false false true false
"" false true false false* false false false false true false false true
* 代表在 PHP 8.0.0 之前為 true。

嚴格比較 ===
true false 1 0 -1 "1" "0" "-1" null [] "php" ""
true true false false false false false false false false false false false
false false true false false false false false false false false false false
1 false false true false false false false false false false false false
0 false false false true false false false false false false false false
-1 false false false false true false false false false false false false
"1" false false false false false true false false false false false false
"0" false false false false false false true false false false false false
"-1" false false false false false false false true false false false false
null false false false false false false false false true false false false
[] false false false false false false false false false true false false
"php" false false false false false false false false false false true false
"" false false false false false false false false false false false true