首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查浮动mysql列中是否包含0的正确方法是什么?

问检查浮动mysql列中是否包含0的正确方法是什么?
EN

Stack Overflow用户
提问于 2017-04-18 02:53:24
回答 2查看 319关注 0票数 1

我很困惑。我在mysql数据库中有几个“浮动”字段。它们要么以0、1、3或5作为值(默认值设置为0)。如果值为0,则该字段为"off“。如果它有1,3或5,它就是"on“。我是这样检查的..。

代码语言:javascript
复制
if ($row['field1'] == "0") {
    $field1 = "off";
} else {
    $field1 = "on";
}

但是我注意到mysql中的字段是0,但它正在返回"on“。

所以我删除了引号,像这样.

代码语言:javascript
复制
if ($row['field1'] == 0) {
    $field1 = "off";
} else {
    $field1 = "on";
}

它正确地返回了"off“。

然而,并非所有字段的行为都是相同的,甚至认为它们都是浮动。

删除引号后,我删除了所有其他浮动字段检查中的引号,但现在它们返回的内容与它们应该的情况相反。

换句话说,在检查字段中是否有0时,有时引号似乎是必要的,有时则不是。但我知道不应该这样。

所以我想我应该从学习什么才是真正正确的方法开始,用0左右的引号吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-18 03:03:34

如果您的数据是真正的数字,那么您可以测试它是否为零,如下所示:

代码语言:javascript
复制
if($row['field']==0) $field1='off';
else $field1='on';

您可以简单地使用条件(三元)操作符,如下所示:

代码语言:javascript
复制
$field1 = $row['field1']==0 ? 'off' : 'on';

或者更简单地使用虚值0,如下所示:

代码语言:javascript
复制
$field1 = $row['field1'] ? 'off' : 'on';

在任何情况下,测试都没有引号,因为值是数字的。

如果怀疑数据是以字符串形式传递的,则应尝试:

代码语言:javascript
复制
$field1 = floatval($row['field1'])==0 ? 'off' : 'on';

注意:

  • “0”作为一个字符串将测试为真实,而0作为一个数字将测试为虚假。这可能是错误匹配的原因。
  • floatval可用于将字符串转换为匹配的浮点数.无效字符串将转换为0。
票数 1
EN

Stack Overflow用户

发布于 2017-04-18 02:55:43

可以使用空测试falsey值,其中包括0、false和null。

代码语言:javascript
复制
if (empty($row['field1'])) {
    $field1 = "off";
} else {
    $field1 = "on";
}

就“真正正确的方式”而言,这是一个意见问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43462798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档