According to PHP documentation, the following expressions return true when calling empty($var)
I've found how to "solve" the problem by using empty($var) && $var != 0
but why php developers did it?
I think it is ridiculous, suppose you have this code:
if (empty($_POST["X"])) {
doSomething();
}
I think "0"
is not empty, empty is when there is nothing!
Maybe it's better to use
if (isset($x) && x != "") {//for strings
doSomething();
}
Definition and UsageThis function returns false if the variable exists and is not empty, otherwise it returns true. The following values evaluates to empty: 0.
is_null() The empty() function returns true if the value of a variable evaluates to false . This could mean the empty string, NULL , the integer 0 , or an array with no elements. On the other hand, is_null() will return true only if the variable has the value NULL .
We can use empty() function to check whether a string is empty or not. The function is used to check whether the string is empty or not. It will return true if the string is empty.
You should use the empty() construct when you are not sure if the variable even exists. If the variable is expected to be set, use if ($var) instead. empty() is the equivalent of !
empty
roughly mirrors PHP's selection of FALSE-y values:
When converting to boolean, the following values are considered FALSE:
- the boolean FALSE itself
- the integer 0 (zero)
- the float 0.0 (zero)
- the empty string, and the string "0"
- an array with zero elements
- ...
As far as why PHP works this way, or why the empty function followed suit - well, that's Just The Way It Is.
Consider using strlen($x)
(this is especially well-suited to sources like $_POST
which are all string values) to determine if there is a non-empty string, including "0".
The final form I use would then be: isset($x) && strlen($x)
, with any additional processing applied knowing there was some post data.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With