【发布时间】:2012-02-22 17:45:55
【问题描述】:
我有一个 if 语句,我想控制一个字段需要输入,他们必须选择其他 2 个选项之一。
if(test1 && test || test3){
//Something here
}
我应该这样做吗:
if(test1 && (test2 || test3)){
//do stuff
}
我将如何去做。我无法理解逻辑......
【问题讨论】:
标签: php if-statement logic
我有一个 if 语句,我想控制一个字段需要输入,他们必须选择其他 2 个选项之一。
if(test1 && test || test3){
//Something here
}
我应该这样做吗:
if(test1 && (test2 || test3)){
//do stuff
}
我将如何去做。我无法理解逻辑......
【问题讨论】:
标签: php if-statement logic
if ($requiredField && ($optional1 || $optional2)) {
/* Do something */
}
对于要执行的 /* Do something */ 位代码,if 语句的计算结果必须为 TRUE。
这意味着,$requiredField 必须是 TRUE,因此必须是 ($optional1 || $optional2)。
对于$requiredField 是TRUE,它只需要填写 - 而对于第二部分:($optional1 || $optional2) optional1 或 optional2 都可以。
编辑:
重新阅读问题后,似乎我可能误解了您。如果用户必须输入一个特定的信息,并且必须从两个选项中只选择一个(而不是两者) - 那么以下应该使用。
if ($requiredField && ($optional1 ^ $optional2)) {
/* Do something */
}
这意味着必须填写 $optional1 或 $optional2 - 但不能同时填写。
【讨论】:
听上去,你想要后者:
if ($test1 && ($test2 || $test3)){
//do stuff
}
将其视为需要满足的两个条件。这给了你这两个条件。第二个条件恰好是另一个条件。但是,您发布的第一个选项恰恰相反,因为如果 $test3 为真,它可以允许执行
【讨论】:
test1 && (test2 || test3) 从一开始就很容易理解 - 选择 test1 && (test2 || test3) 表示后两个中的一个。很清楚。
test1 && test || test3 - 似乎不正确:
test1 = false
test2 = false
test3 = true
false && false || true = true
实际上并不符合您的标准。
【讨论】:
...他们必须选择其他两个选项之一
我只是在这里猜测一下。如果你真的想确保一个,但只选择了其他两个选项之一,那么你需要xor:
if ($required AND ($and_either XOR $or_other)) {
【讨论】:
您可以使用单个 if 语句和附加括号来“嵌套”if 语句。
if(test1 && (test2 || test3)){
//do stuff
}
【讨论】:
您的逻辑是正确的,但您的 sintax 不正确,您应该按所示比较变量的值,或者干脆忽略它们,因为您正在尝试比较它们,因为它们是 TRUE。
$test1=true;
$test2=true;
$test3=false;
if($test1==true && ($test2==true || $test3==true){ echo "YES";}
这将输出 YES。
【讨论】: