'Why does 0.00 evaluates to true?
I wanted to write a very simple function display some values only if they evaluate to true. So I wrote the piece of code below, and some test function calls...
function value_fff($value = false)
{
return $value ? $value : '';
}
echo value_fff('fsdfsdf') . '<br />';
echo value_fff('0.00') . '<br />';
echo value_fff('0') . '<br />';
echo value_fff(false) . '<br />';
echo value_fff(null) . '<br />';
echo value_fff('1') . '<br />';
echo value_fff() . '<br />';
echo value_fff(true) . '<br />';
My problem is that I get the following values:
fsdfsdf
0.00
1
1
So, it's obvious that 0.00 evaluates to true... Why is that happening? Indeed I'm in a locale that decimal separator is , instead of ., but is it that? And if yes, how am I supposed to deal with it?
Solution 1:[1]
function value_fff($value = false)
{
if (is_numeric($value)) { $value += 0; }
return $value ? $value : '';
}
tried adding is_numeric() to check if the string is number then we're gonna add it to 0 just to make it a number.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
