isset vs empty vs is_null

by Vincy. Last modified on June 5th, 2021.

PHP has multiple functions to check PHP variables with respect to their initialized values. These functions are isset, empty and is_null.

  • isset() is to check if a variable is set with a value and that value should not be null.
  • empty() is to check if a given variable is empty. The difference with isset() is, isset has null check.
  • is_null() is to check whether a variable is defined as 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

Ok! Now find the difference!

difference

Code to understand the difference

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

Differences

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.

Differences table

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

References

Leave a Reply

Your email address will not be published. Required fields are marked *

↑ Back to Top