
PHP has multiple functions to check PHP variables with respect to their initialized values. These functions are isset, empty and is_null.
I feel the effective way to communicate the difference would be with the help of a TRUTH TABLE,
“” | “apple” | NULL | FALSE | 0 | undefined | |
empty() | TRUE | FALSE | TRUE | TRUE | TRUE | TRUE |
is_null() | FALSE | FALSE | TRUE | FALSE | FALSE | ERROR |
isset() | TRUE | TRUE | FALSE | TRUE | TRUE | FALSE |
difference.php
<?php print "<br/>ISSET: <br/>"; $var = ""; print 'isset(""): ' . isset($var) . "<br/>"; $var = 'apple'; print "isset('apple'): " . isset($var) . "<br/>"; $var = null; print "isset(null): " . isset($var) . "<br/>"; $var = FALSE; print "isset(FALSE): " . isset($var) . "<br/>"; $var = 0; print "isset(0): " . isset($var) . "<br/>"; print "isset(undefined): " . isset($var3) . "<br/>"; print "<br/>EMPTY: <br/>"; $var = ""; print 'empty(""): ' . empty($var) . "<br/>"; $var = 'apple'; print "empty('apple'): " . empty($var) . "<br/>"; $var = null; print "empty(null): " . empty($var) . "<br/>"; $var = FALSE; print "empty(FALSE): " . empty($var) . "<br/>"; $var = 0; print "empty(0): " . empty($var) . "<br/>"; print "empty(undefined): " . empty($var1) . "<br/>"; print "<br/>IS_NULL: <br/>"; $var = ""; print 'is_null(""): ' . is_null($var) . "<br/>"; $var = 'apple'; print "is_null('apple'): " . is_null($var) . "<br/>"; $var = null; print "is_null(null): " . is_null($var) . "<br/>"; $var = FALSE; print "is_null(FALSE): " . is_null($var) . "<br/>"; $var = 0; print "is_null('0'): " . is_null($var) . "<br/>"; print "is_null(undefined):" . is_null($var2) . "<br/>"; ?>
Output:
ISSET: isset(""): 1 isset('apple'): 1 isset(null): isset(FALSE): 1 isset(0): 1 isset(undefined): EMPTY: empty(""): 1 empty('apple'): empty(null): 1 empty(FALSE): 1 empty(0): 1 empty(undefined): 1 IS_NULL: is_null(""): is_null('apple'): is_null(null): 1 is_null(FALSE): is_null('0'): Notice: Undefined variable: var2 in /Library/WebServer/Documents/test/difference.php on line 39 is_null(undefined):1
isset:
Returns true for empty string, False, 0 or an undefined variable. Returns false for null.
empty:
Returns true for null, empty string, False, 0 or an undefined variable. Returns true if there is any value.
is_null:
Returns true for null only. Returns false in all other cases. Throws warning if the variable is undefined.
Value of $var | isset | empty | is_null |
---|---|---|---|
“” (empty string) | true | true | false |
FALSE | true | true | false |
0 | true | true | false |
null(declaration-only) | false | true | true |
undefined variable | false | true | Warning |
TRUE | true | false | false |
array() (empty array) | true | true | false |
‘apple’ (string value) | true | true | false |
123 (numeric value) | true | true | false |