There is absolutely no difference in functionality between is_null
and === null
.
The only difference is that is_null
is a function and thus
- is marginally slower (function call overhead)
- can be used as a callback, e.g.
array_map('is_null', $array)
.
Personally, I use null ===
whenever I can, as it is more consistent with false ===
and true ===
checks.
If you want, you can check the code: is_identical_function
(===
) and php_is_type
(is_null
) do the same thing for the IS_NULL
case.
The related isset()
language construct checks whether the variable actually exists before doing the null
check. So isset($undefinedVar)
will not throw a notice.
Also note that isset()
may sometimes return true
even though the value is null
– this is the case when it is used on an overloaded object, i.e. if the object defines an offsetExists
/__isset
method that returns true
even if the offset is null
(this is actually quite common, because people use array_key_exists
in offsetExists
/__isset
).