Php 确定零、零(双精度)和值(双精度)之间的差异
由于NULL和0在php中都返回为空,因此我很难根据mysqli记录集的双类型结果来确定两者之间的差异 我尝试转换每个场景,以返回更易于管理的返回字符串:Php 确定零、零(双精度)和值(双精度)之间的差异,php,mysqli,Php,Mysqli,由于NULL和0在php中都返回为空,因此我很难根据mysqli记录集的双类型结果来确定两者之间的差异 我尝试转换每个场景,以返回更易于管理的返回字符串: if($val == 0){ echo "No Cost Option"; } elseif (empty($val)){ echo "UNCOSTED"; } else { echo "£ ".number_format($val ,2); } 从理论上讲,如果DB中存在零,它应该返回“无成本选项” 同样,如果DB返回N
if($val == 0){
echo "No Cost Option";
} elseif (empty($val)){
echo "UNCOSTED";
} else {
echo "£ ".number_format($val ,2);
}
从理论上讲,如果DB中存在零,它应该返回“无成本选项”
同样,如果DB返回NULL,它应该返回“UNCOSTED”
最后,如果有一个值,它将简单地格式化该值
目前(而且不正确),Null和0都被以相同的方式处理,因此都被视为“无成本选项”。如果您严格希望与数字0进行比较,则应使用=
if($val === 0){
echo "No Cost Option";
} elseif (empty($val)){
echo "UNCOSTED";
} else {
echo "£ ".number_format($val ,2);
}
使用===可以获得严格相同的比较(类型和值)
如果你想更精确
0、null、false、“0”、[](空数组)和更多(请参阅)的值相等。
所以
但是如果您将它们与====进行比较,则它们不是。您可以严格地将它们与
空值进行比较。如果严格地与integer进行比较,它可能不起作用,因为结果将是一个数字字符串
if($val === 0){
echo "No Cost Option";
} elseif (empty($val)){
echo "UNCOSTED";
} else {
echo "£ ".number_format($val ,2);
}
颠倒if语句顺序,首先检查null
if (null === $val) {
echo "UNCOSTED";
} elseif ($val == 0) {
echo "No Cost Option";
} else {
echo "£ ".number_format($val, 2);
}
@Dharman-不知道-谢谢。仅供参考mysqli的结果将始终以字符串或空值的形式出现。如果比较'0'==0
,它将返回false.Hmmm-如果值为零,此答案实际上会导致问题。它返回“未编码”@达曼他的答案似乎是一致的。这就是我所说的,当我说0=='0'==false,但当使用===时返回false,它是零(0)还是“0”,这是不一样的。您在问题中要求的是零,而不是“0”,这可能是因为@Dharman说mysqli的结果总是以字符串或字符串的形式出现null@DylanKas这确实是一个零(0),而不是一个“0”。