我很困惑。我在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";
}它正确地返回了"off“。
然而,并非所有字段的行为都是相同的,甚至认为它们都是浮动。
删除引号后,我删除了所有其他浮动字段检查中的引号,但现在它们返回的内容与它们应该的情况相反。
换句话说,在检查字段中是否有0时,有时引号似乎是必要的,有时则不是。但我知道不应该这样。
所以我想我应该从学习什么才是真正正确的方法开始,用0左右的引号吗?
发布于 2017-04-18 03:03:34
如果您的数据是真正的数字,那么您可以测试它是否为零,如下所示:
if($row['field']==0) $field1='off';
else $field1='on';您可以简单地使用条件(三元)操作符,如下所示:
$field1 = $row['field1']==0 ? 'off' : 'on';或者更简单地使用虚值0,如下所示:
$field1 = $row['field1'] ? 'off' : 'on';在任何情况下,测试都没有引号,因为值是数字的。
如果怀疑数据是以字符串形式传递的,则应尝试:
$field1 = floatval($row['field1'])==0 ? 'off' : 'on';注意:
floatval可用于将字符串转换为匹配的浮点数.无效字符串将转换为0。发布于 2017-04-18 02:55:43
可以使用空测试falsey值,其中包括0、false和null。
if (empty($row['field1'])) {
$field1 = "off";
} else {
$field1 = "on";
}就“真正正确的方式”而言,这是一个意见问题。
https://stackoverflow.com/questions/43462798
复制相似问题