由于 NULL 和 0 在 php 中都返回为空,我正在努力根据来自 mysqli 记录集的双精度类型结果来确定差异。我已经尝试转换每个场景以返回更易于管理的返回字符串:if($val == 0){ echo "No Cost Option";} elseif (empty($val)){ echo "UNCOSTED";} else { echo "£ ".number_format($val ,2);}理论上,如果数据库中存在零,它应该返回“无成本选项”。同样,如果 DB 返回 NULL,它应该返回“UNCOSTED”。最后,如果有一个值,它将简单地格式化该值。当前(并且错误地),NULL 和 0 的处理方式相同,因此都被视为“无成本选项”。
2 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
您可以严格比较null. 如果您严格与整数进行比较,它可能不起作用,因为结果将是一个数字字符串。
反转您的 if 语句顺序并首先检查 null。
if (null === $val) {
echo "UNCOSTED";
} elseif ($val == 0) {
echo "No Cost Option";
} else {
echo "£ ".number_format($val, 2);
}
不负相思意
TA贡献1777条经验 获得超10个赞
如果您严格想与数字 0 进行比较,则应使用===
if($val === 0){
echo "No Cost Option";
} elseif (empty($val)){
echo "UNCOSTED";
} else {
echo "£ ".number_format($val ,2);
}
您使用 === 来获得严格相同的比较(类型和值)。
如果你想要更精确,
0、null、false、"0"、[](空数组)和更多(参见类型比较)的值相等。所以
0 == null == false == "0" == array()
但是,如果您将它们的类型与===进行比较,则它们不是
- 2 回答
- 0 关注
- 92 浏览
添加回答
举报
0/150
提交
取消