为了账号安全,请及时绑定邮箱和手机立即绑定

确定 NULL、零(双精度)和值(双精度)之间的差异

确定 NULL、零(双精度)和值(双精度)之间的差异

PHP
Cats萌萌 2021-11-13 17:21:00
由于 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);

}


查看完整回答
反对 回复 2021-11-13
?
不负相思意

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()

但是,如果您将它们的类型与===进行比较,则它们不是


查看完整回答
反对 回复 2021-11-13
  • 2 回答
  • 0 关注
  • 92 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信