PHP comparison results
Boolean results of PHP operations commonly used when comparing with PHP's if.
Always try to use strict comparison (three equal signs ===) to avoid ambiguity. See also: the if command and PHP type comparison tables on php.net.
Ambiguous (avoid)
$value => | undefined | null | false | true | "0" | 0 | "1" | 1 | empty string "" | "string" | array() | array("foo") |
---|---|---|---|---|---|---|---|---|---|---|---|---|
$value == null | true | true | true | false | false | true | false | false | true | false | true | false |
$value == false | true | true | true | false | true | true | false | false | true | false | true | false |
!$value | true | true | true | false | true | true | false | false | true | false | true | false |
empty($value) | true | true | true | false | true | true | false | false | true | false | true | false |
$value == 0 | true | true | true | false | true | true | false | false | true | true | false | false |
$value == "0" | false | false | true | false | true | true | false | false | false | false | false | false |
$value == true | false | false | false | true | false | false | true | true | false | true | false | true |
$value == 1 | false | false | false | true | false | false | true | true | false | false | false | false |
$value == "1" | false | false | false | true | false | false | true | true | false | false | false | false |
Strict (use)
$value => | undefined | null | false | true | "0" | 0 | "1" | 1 | empty string "" | "string" | array() | array("foo") |
---|---|---|---|---|---|---|---|---|---|---|---|---|
isset($value) | false | false | true | true | true | true | true | true | true | true | true | true |
is_null($value) | true | true | false | false | false | false | false | false | false | false | false | false |
$value === null | true | true | false | false | false | false | false | false | false | false | false | false |
$value === false | false | false | true | false | false | false | false | false | false | false | false | false |
$value === true | false | false | false | true | false | false | false | false | false | false | false | false |
$value === "0" | false | false | false | false | true | false | false | false | false | false | false | false |
$value === 0 | false | false | false | false | false | true | false | false | false | false | false | false |
$value === "1" | false | false | false | false | false | false | true | false | false | false | false | false |
$value === 1 | false | false | false | false | false | false | false | true | false | false | false | false |
What's up with …
empty()
vs == FALSE
$value => | undefined | null | false | true | "0" | 0 | "1" | 1 | empty string "" | "string" | array() | array("foo") |
---|---|---|---|---|---|---|---|---|---|---|---|---|
empty($value) | true | true | true | false | true | true | false | false | true | false | true | false |
$value == false | true | true | true | false | true | true | false | false | true | false | true | false |
If a $value
is undefined $value == FALSE
will throw you a warning:
Notice: Undefined variable: value in /yourscript.php on line 1
empty($value)
will not.