我很困惑。我有几个"浮动" mysql数据库中的字段。它们具有0,1,3或5作为值(默认设置为0)。如果该值为0,则该字段为" off"为了我的目的。如果它有1,3或5,那么" on"。我这样检查......
if ($row['field1'] == "0") {
$field1 = "off";
} else {
$field1 = "on";
}
但是我注意到mysql中的字段为0,但它正在返回" on"。
所以我删除了引号,就像这样...
if ($row['field1'] == 0) {
$field1 = "off";
} else {
$field1 = "on";
}
它正确地返回"关闭"。
然而,并非所有字段的行为都相同,甚至认为它们都是浮点数。
删除引号后,我删除了所有其他浮点字段检查中的引号,但现在它们返回的应该与它们应该相反。
换句话说,在检查字段中是否有0时,有时引号似乎是必要的,有时不是。但我知道情况不应该如此。
所以我想通过学习真正正确的方法来启动她,引用大约是否为0?
答案 0 :(得分:1)
您可以使用清空来测试假名值,该值包括0,false和null
if (empty($row['field1'])) {
$field1 = "off";
} else {
$field1 = "on";
}
至于"真正正确的方式",这是一个意见问题。
答案 1 :(得分:1)
如果您的数据是真正的数字,那么您可以按如下方式测试它是否为零:
if($row['field']==0) $field1='off';
else $field1='on';
您可以更简单地使用条件(三元)运算符,如下所示:
$field1 = $row['field1']==0 ? 'off' : 'on';
或更简单地使用 falsy 值为0,如下所示:
$field1 = $row['field1'] ? 'off' : 'on';
在任何情况下,您都不用引号进行测试,因为值是数字。
如果您怀疑数据是以字符串形式出现的,那么您应该尝试:
$field1 = floatval($row['field1'])==0 ? 'off' : 'on';
注意:
floatval
可用于将字符串转换为匹配的浮点数。无效字符串将转换为0。