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.