PHP运算符if语句'和'和'或'

时间:2012-01-30 23:13:25

标签: php if-statement logic

我有一个if语句,我想控制一个字段需要输入,他们必须选择其他两个选项中的一个。

if(test1 && test || test3){
//Something here
}

我应该这样做:

if(test1 && (test2 || test3)){
//do stuff
}

我将如何做到这一点。我无法绕过逻辑......

6 个答案:

答案 0 :(得分:13)

if ($requiredField && ($optional1 || $optional2)) {
  /* Do something */
}

对于要执行的/* Do something */位代码,if语句必须求值为TRUE

这意味着,$requiredField必须为TRUE,因此必须为($optional1 || $optional2)

$requiredFieldTRUE,只需要填写 - 对于第二部分:($optional1 || $optional2) optional1optional2会做它

编辑:

重读这个问题之后,似乎我可能误会了你。如果用户必须输入一条特定信息,并且必须仅从两个选项中选择一个(而不是两者) - 那么以下内容应该是使用。

if ($requiredField && ($optional1 ^ $optional2)) {
  /* Do something */
}

这意味着必须填写$optional1$optional2 - 但不能同时填写。{/ p>

答案 1 :(得分:2)

从它的声音来看,你需要后者:

if ($test1 && ($test2 || $test3)){
    //do stuff
}

将其视为需要满足的两个条件。这给了你这两个条件。第二个条件恰好是另一个条件。但是,您发布的第一个选项恰恰相反,因为如果$test3为真,它可以允许执行

答案 2 :(得分:2)

test1 && (test2 || test3)从一开始就很容易理解 - 选择test1&& (test2 || test3)表示最后两个。很清楚。

test1 && test || test3 - 似乎不正确:

test1 = false
test2 = false
test3 = true

false && false || true = true

实际上并不符合您的标准。

答案 3 :(得分:1)

  

......他们必须选择其他两个选择中的一个

我只想在这里猜一猜。如果你真的想确保选择一个,但只选择其中两个选项中的一个,那么你需要xor

if ($required AND ($and_either XOR $or_other)) {

答案 4 :(得分:0)

您可以在单个if语句中使用'嵌套'if语句,并附加括号。

 if(test1 && (test2 || test3)){
    //do stuff
    }

答案 5 :(得分:0)

你的逻辑是正确的,但你的sintax不是,你应该比较变量的值,或者只是忽略它们说你试图比较它们是正确的。

$test1=true;
$test2=true;
$test3=false;
if($test1==true && ($test2==true || $test3==true){ echo "YES";}

这将输出YES。