PHP 区别判断 0 和 0.00

技巧库 · echo · 于 2年前 发布 · 7113 次阅读

我们先来看一个需求,判断一个传值过来的价格参数,如果这个价格参数不为零的话,就会有一些操作,一般我们都是这样写:

if (!empty($price)) {
    // do something
}

但是这样写如果会有一个BUG,我们来先一个示例:

$a = 0.00;
$b = '0.00';
echo (empty($a) ? "empty a" : "not empty a "); //result empty a
echo "</br>";
echo (empty($b) ? "empty b" : "not empty b"); //result not empty b

由于 PHP 是弱类型,类型检查不严格,也就是说如果上面那个 $price 如果传的是字符串'0.00',结果就会执行 if 里面的代码,这就导致你程序的一个 BUG。

那么怎么解决这个 BUG 呢?其实也很简单,我们把字符串统一强制转换成浮点型就可以了:

$c = (float)$b;
echo (empty($c) ? "empty c" : "not empty c"); //result empty c

$price = '0.00';
if (!empty((float)$price)) {
    // do something
}

本文由 echo 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 2 条回复 PHP基础用法
yiier#12年前 0 个赞

不错,这两天刚好碰到这个问题

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册