繁体   English   中英

PHP if / else问题使用true / false

[英]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 ,因为1true0false

if ($db_muted_val) {
    // do this first thing
} else {
    // do something else
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM