检查浮动mysql列是否有0的正确方法是什么?

时间:2017-04-18 02:53:25

标签: php mysql

我很困惑。我有几个"浮动" 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?

2 个答案:

答案 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';

注意:

  • '0'作为字符串将测试为truthy,而0作为数字将测试为falsy。这可能导致不匹配
  • floatval可用于将字符串转换为匹配的浮点数。无效字符串将转换为0。