为什么&&不会触发为false?

时间:2020-09-29 01:47:51

标签: php conditional-statements

我有一个简单的if语句,但没有得到预期的结果。如果所有三个变量都匹配,那么我将按预期得到not supported。但是我希望一旦将其中一个变量更改为if语句中没有的值,例如$Main = "SomethingElse",如果if语句不匹配,则回显supported。但是,supported仅在所有三个var与if语句都不匹配时才返回。

为什么会这样?

$Main = "Main_Other";
$Backup = "Back_None";
$online = "no";

if ($online == "no" && $Main == "Main_Other" && $Backup == "Back_Other" || $Backup == "Back_None") {
  echo "not support";
} else {
  echo "supported";
}

2 个答案:

答案 0 :(得分:2)

在您的示例中,如果$ backup的值设置为Back_None,则if语句将始终返回true。

尝试使用以下代码。在这里,它将首先使用||运算符检查$ backup值,然后将使用&&运算符检查结果

$Main = "Main_Other";
$Backup = "Back_None";

$online = "no";

if ($online == "no" && $Main == "Main_Other" && ($Backup == "Back_Other" || $Backup == "Back_None")) {
  echo "not support";
} else {
  echo "supported";
}

答案 1 :(得分:-3)

$Main = "SomethingElse"|| $Backup == "Back_None",您使用or$Backup 不要改变