PHP 類型比較表

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

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

注意:

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

注意:

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

注意:

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

使用 PHP 函數(shù)對(duì)變量 $x 進(jìn)行比較
表達(dá)式 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

嚴(yán)格比較 ===
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