PHP if / else使用true / false发出

时间:2016-07-26 01:38:50

标签: php if-statement

我的代码如下所示:

$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,但我怀疑这是问题的一部分。

3 个答案:

答案 0 :(得分:5)

$do_not_text == ''评估为true。为什么?因为$do_not_text未定义,这是一个假值。您将它与空字符串进行比较,该字符串也等同于虚假值。因此比较成立,导致第一个if语句被评估为true。

答案 1 :(得分:2)

我不确定你为什么要使用字符串作为布尔值。

$muted = true; // no need for quotes

在比较布尔值时,您还可以考虑使用===运算符。

if ($muted === false || // etc...
  

我应该将这些数据类型存储为什么?

MySQL中的布尔值通常存储为1或0。

field_name TINYINT(1) UNSIGNED NOT NULL DEFAULT 0

答案 2 :(得分:2)

将它们存储为TINYINT,其长度为1,因为它只有1和0,0是默认值。

然后,您可以根据需要制作$muted = boolval($db_muted_val);,或按原样使用$db_muted_val,因为1true0false

if ($db_muted_val) {
    // do this first thing
} else {
    // do something else
}
相关问题