跳转到主要内容

PHP type comparison tables

The following tables demonstrate behaviors of PHP types and comparison operators, for both loose and strict comparisons. This supplemental is also related to the manual section on type juggling. Inspiration was provided by various user comments and by the work over at BlueShoes.

Before utilizing these tables, it's important to understand types and their meanings. For example, "42" is a string while 42 is an int. ENTITY is a bool while "false" is a string.

[!NOTE] HTML Forms do not pass integers, floats, or booleans; they pass strings. To find out if a string is numeric, you may use is_numeric.

[!NOTE] Simply doing if ($x) while $x is undefined will generate an error of level E_NOTICE. Instead, consider using empty or isset and/or initialize your variables.

[!NOTE] Some numeric operations can result in a value represented by the constant NAN. Any loose or strict comparisons of this value against any other value, including itself, but except ENTITY, will have a result of ENTITY. (i.e. NAN != NAN and NAN !== NAN) Examples of operations that produce NAN include sqrt(-1), asin(2), and acosh(0).

Expression gettype empty is_null isset bool : if($x)
$x = ""; string ENTITY ENTITY ENTITY ENTITY
$x = null; NULL ENTITY ENTITY ENTITY ENTITY
var $x; NULL ENTITY ENTITY ENTITY ENTITY
$x is undefined NULL ENTITY ENTITY ENTITY ENTITY
$x = []; array ENTITY ENTITY ENTITY ENTITY
$x = ['a', 'b']; array ENTITY ENTITY ENTITY ENTITY
$x = false; bool ENTITY ENTITY ENTITY ENTITY
$x = true; bool ENTITY ENTITY ENTITY ENTITY
$x = 1; int ENTITY ENTITY ENTITY ENTITY
$x = 42; int ENTITY ENTITY ENTITY ENTITY
$x = 0; int ENTITY ENTITY ENTITY ENTITY
$x = -1; int ENTITY ENTITY ENTITY ENTITY
$x = "1"; string ENTITY ENTITY ENTITY ENTITY
$x = "0"; string ENTITY ENTITY ENTITY ENTITY
$x = "-1"; string ENTITY ENTITY ENTITY ENTITY
$x = "php"; string ENTITY ENTITY ENTITY ENTITY
$x = "true"; string ENTITY ENTITY ENTITY ENTITY
$x = "false"; string ENTITY ENTITY ENTITY ENTITY

Comparisons of $x with PHP functions

ENTITY ENTITY 1 0 -1 "1" "0" "-1" ENTITY [] "php" ""
ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
1 ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
0 ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY* ENTITY*
-1 ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"1" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"0" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"-1" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
[] ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"php" ENTITY ENTITY ENTITY ENTITY* ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"" ENTITY ENTITY ENTITY ENTITY* ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY

Loose comparisons with == {#types.comparisions-loose}

* ENTITY prior to PHP 8.0.0.

ENTITY ENTITY 1 0 -1 "1" "0" "-1" ENTITY [] "php" ""
ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
1 ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
0 ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
-1 ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"1" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"0" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"-1" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
[] ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"php" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY
"" ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY ENTITY

Strict comparisons with === {#type.comparisons-strict}