PHP check if False or Null
Solution 1
For returns from functions, you use neither isset
nor empty
, since those only work on variables and are simply there to test for possibly non-existing variables without triggering errors.
For function returns checking for the existence of variables is pointless, so just do:
if (!my_function()) {
// function returned a falsey value
}
To read about this in more detail, see The Definitive Guide To PHP's isset
And empty
.
Solution 2
Checking variable ( a few examples )
if(is_null($x) === true) // null
if($x === null) // null
if($x === false)
if(isset($x) === false) // variable undefined or null
if(empty($x) === true) // check if variable is empty (length of 0)
Solution 3
Isset() checks if a variable has a value including ( False , 0 , or Empty string) , But not NULL. Returns TRUE if var exists; FALSE otherwise.
On the other hand the empty() function checks if the variable has an empty value empty string , 0, NULL ,or False. Returns FALSE if var has a non-empty and non-zero value.
Solution 4
ISSET
checks the variable to see if it has been set, in other words, it checks to see if the variable is any value except NULL
or not assigned a value
. ISSET returns TRUE if the variable exists and has a value other than NULL. That means variables assigned a " ", 0, "0", or FALSE are set, and therefore are TRUE for ISSET.
EMPTY
checks to see if a variable is empty. Empty is interpreted as: " " (an empty string), 0 (0 as an integer), 0.0 (0 as a float), "0" (0 as a string), NULL, FALSE, array() (an empty array), and "$var;" (a variable declared, but without a value in a class.
Solution 5
isset — Determine if a variable is set and is not NULL
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
empty — Determine whether a variable is empty
<?php
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}
?>
Related videos on Youtube
![Harsha M V](https://i.stack.imgur.com/T71og.jpg?s=256&g=1)
Harsha M V
I turn ideas into companies. Specifically, I like to solve big problems that can positively impact millions of people through software. I am currently focusing all of my time on my company, Skreem, where we are disrupting the ways marketers can leverage micro-influencers to tell the Brand’s stories to their audience. People do not buy goods and services. They buy relations, stories, and magic. Introducing technology with the power of human voice to maximize your brand communication. Follow me on Twitter: @harshamv You can contact me at -- harsha [at] skreem [dot] io
Updated on December 25, 2020Comments
-
Harsha M V over 3 years
I also get confused how to check if a variable is
false
/null
when returned from a function.When to use
empty()
and when to useisset()
to check the condition ? -
Gromski almost 12 years
empty
is not evil, you simply do not understand its use case. May I direct you to The Definitive Guide To PHP's isset And empty? -
Gromski almost 12 yearsA variable cannot not have an assigned value. The value is at least
null
. -
Harsha M V almost 12 yearsi am actually trying to catch a return array or false and trying to determine further what to do
-
Gromski almost 12 yearsOK? So
$return = myfunction(); if (!$return) { // 't was false! }
-
Gromski over 10 years@tkoom Would you be happier if the syntax was more operator-like?
-
ducin over 10 years@deceze, if
empty
is not a function, it'd be nice if it didn't pretend one. And it does and it confuses programmers, just as a lot of things does (see me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design) -
grasevski almost 9 yearsNote that this also catches empty strings and empty arrays and 0 and '0', which might not be what you want
-
ToolmakerSteve over 5 yearsYour comment on
empty
not quite correct:empty
also returns true for values that are equivalent to 0. -
mickmackusa over 3 yearsToolmakerSteve is correct, the explanation of what
empty()
does is misleading for researchers.