我在MySQL数据库表中有一个类型为decimal(15,4)的字段。
我以前从未遇到过这种情况,但如果值为0.0000,我的PHP if语句将返回true!
为了进行健全性检查,我甚至执行了以下操作:
if(0.0000) echo "Hello World";
果然,"Hello World"被输出了。到底发生了什么?有人有什么想法吗?
我在MySQL数据库表中有一个类型为decimal(15,4)的字段。
我以前从未遇到过这种情况,但如果值为0.0000,我的PHP if语句将返回true!
为了进行健全性检查,我甚至执行了以下操作:
if(0.0000) echo "Hello World";
果然,"Hello World"被输出了。到底发生了什么?有人有什么想法吗?
if(floatval($value) > 0) { ... }
其中$value
包含来自数据库的值。
我认为问题在于你从数据库中获取的是字符串"0.0000"
,而不是0.0000
。
请尝试使用以下代码:
if ((int)$your_value) echo "Hello World";
var_dump((bool)0.000)
的结果是什么? - xdazz我的PHP版本(5.3.3)上没有这种行为。
我建议在检查之前将数字转换为bool:if ((bool) $float)
。