[英]PHP if/else issue using true/false
我的代码如下所示:
$muted = 'true'; //Note this is only for testing
if ($muted == 'false' || $muted == '' || $do_not_text == '' || $do_not_text =='false'){
//do this first thing
}
else{
//do something else
}
我不能让else
跑。 我搞砸了什么语法?
与此相关的是,我在数据库中存储了一个值(即在我的真实代码中设置$muted
),即“ true”,“ false”或“”。 我应该将这些数据存储为什么数据类型? 当前,我正在使用VARCHAR
,但是我怀疑这是问题的全部。
$do_not_text == ''
评估为true。 为什么? 因为未定义$do_not_text
,这是一个伪造的值。 您正在将其与一个空字符串进行比较,该字符串也等于一个伪造的值。 这样的比较是正确的,导致第一个if语句被评估为true。
我不确定为什么要使用字符串作为布尔值。
$muted = true; // no need for quotes
比较布尔值时,您可能还考虑使用===
运算符。
if ($muted === false || // etc...
我应该将这些数据存储为什么数据类型?
MySQL中的布尔值通常存储为1或0。
field_name TINYINT(1) UNSIGNED NOT NULL DEFAULT 0
将它们存储为TINYINT
,长度为1
因为它只有1和0,默认值为0
。
然后可以使$muted = boolval($db_muted_val);
如果需要,或$db_muted_val
原样使用$db_muted_val
,因为1
为true
, 0
为false
。
if ($db_muted_val) {
// do this first thing
} else {
// do something else
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.