NULL in PHP: When an Empty String Isn't Null
Consider the following PHP code:
<code class="php">$a = ''; if($a == NULL) { echo 'is null'; }</code>
Why does it output "is null" when $a is clearly an empty string? Is this a bug?
Understanding Equality and Identity
The key to understanding this behavior lies in the distinction between equality (==) and identity (===). In PHP, == checks if two operands have the same value, while === checks if they have the same value and type.
In the code above, $a is an empty string, which is a falsy value. In PHP, falsy values are treated as equal to NULL, false, 0, and empty arrays. Therefore, $a == NULL evaluates to true.
Using === to Check for NULL
To specifically check if a variable is NULL, use the identity operator (===):
<code class="php">if($variable === NULL) {...}</code>
Note the triple equals sign. By using ===, you ensure that the variable is not only falsy, but also of type NULL.
Conclusion
The empty string in PHP is not considered NULL. To explicitly check for NULL, use the identity operator (===). This distinction is crucial for ensuring accurate comparison and logic in your PHP code.
The above is the detailed content of Why does `$a == NULL` evaluate to true when `$a` is an empty string in PHP?. For more information, please follow other related articles on the PHP Chinese website!