Unix Domain: Unix and UDG
List of Parser Tokens
Appendices
PHP Manual

# 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 integer. `FALSE` is a boolean 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, will have a result of `FALSE`. (i.e. NAN != NAN and NAN !== NAN) Examples of operations that produce `NAN` include sqrt(-1), asin(2), and asinh(0).

Comparisons of $x with PHP functions
Expression | 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`

Loose comparisons with ==
| `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` | `FALSE` | `TRUE`

Strict comparisons with ===
| `TRUE` | `FALSE` | 1 | 0 | -1 | "1" | "0" | "-1" | `NULL` | array() | "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`
array() | `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`

Unix Domain: Unix and UDG
List of Parser Tokens
Appendices
PHP Manual