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

由于 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 的处理方式相同,因此都被视为“无成本选项”。


Cats萌萌
浏览 93回答 2
2回答

呼唤远方

您可以严格比较null. 如果您严格与整数进行比较,它可能不起作用,因为结果将是一个数字字符串。反转您的 if 语句顺序并首先检查 null。if (null === $val) {    echo "UNCOSTED";} elseif ($val == 0) {    echo "No Cost Option";} else {    echo "£ ".number_format($val, 2);}

不负相思意

如果您严格想与数字 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()但是,如果您将它们的类型与===进行比较,则它们不是
打开App,查看更多内容
随时随地看视频慕课网APP