Possible Duplicate:
php == vs === operator
i have the following code fragment and it doesn't make sense to me why would NULL be evaluated in 3 different ways. Consider the variable $uploaded_filenames_array
as UNKNOWN - we don't know whether it's still an array or a NULL. That's what we are trying to check.
//-----------------------------------------------
if (is_null($uploaded_filenames_array)){
echo "is_null";
}
else{
echo "is_NOT_null";
}
//-----------------------------------------------
if ($uploaded_filenames_array == NULL){
echo "NULL stuff";
}
else{
echo "not NULL stuff";
}
//-----------------------------------------------
if ($uploaded_filenames_array === NULL){
echo "NULL identity";
}
else{
echo "not NULL identity";
}
//-----------------------------------------------
i am getting the following response:
is_NOT_null
NULL stuff
not NULL identity
can somebody help to understand what is the programmatic difference between these 3 ways of checking NULL?
is_null($a)
is same as $a === null
.
($a === null
is bit faster than is_null($a)
for saving one function call, but it doesn't matter, just choose the style you like.)
For the difference of ===
and ==
, read PHP type comparison tables
$a === null
be true only if $a
is null
.
But for ==
, the below also returns true
.
null == false
null == 0
null == array()
null == ""
You should read this http://php.net/manual/en/language.operators.comparison.php. Also no need to use is_null
function to check only on NULL
. ===
is faster...
The ===
operator tests for the same value and the same TYPE. An empty string might evaluate to null, but it is not of the null
type - hence this fails.
The ==
operator basically checks to see if they are pretty much the same - by that, do the evaluate to the same value. Being empty, this will evaluate to null, hence this fails.
The is_null
function does a fairly thorough check - much more like the ===
operator.
==
checks if the value is equal e.g.:
>> "123" == 123
<< true
===
checks if the value & type are equal e.g.:
>> "123" === 123
<< false