PHP 运算符 if 语句 'and' 和 'or'
Posted
技术标签:
【中文标题】PHP 运算符 if 语句 \'and\' 和 \'or\'【英文标题】:PHP operators if statement 'and' and 'or'PHP 运算符 if 语句 'and' 和 'or' 【发布时间】:2012-02-22 17:45:55 【问题描述】:我有一个 if 语句,我想控制一个字段需要输入,他们必须选择其他 2 个选项之一。
if(test1 && test || test3)
//Something here
我应该这样做吗:
if(test1 && (test2 || test3))
//do stuff
我将如何去做。我无法理解逻辑......
【问题讨论】:
请阅读Operator Precedence 【参考方案1】: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
- 但不能同时填写。
【讨论】:
不错的命名。也许可以解释为什么这有效,因为 OP 不理解使用这个 if 语句的逻辑。 :)【参考方案2】:听上去,你想要后者:
if ($test1 && ($test2 || $test3))
//do stuff
将其视为需要满足的两个条件。这给了你这两个条件。第二个条件恰好是另一个条件。但是,您发布的第一个选项恰恰相反,因为如果 $test3
为真,它可以允许执行
【讨论】:
【参考方案3】:test1 && (test2 || test3)
从一开始就很容易理解 - 选择 test1 && (test2 || test3) 表示后两个中的一个。很清楚。
test1 && test || test3
- 似乎不正确:
test1 = false
test2 = false
test3 = true
false && false || true = true
实际上并不符合您的标准。
【讨论】:
【参考方案4】:...他们必须选择其他两个选项之一
我只是在这里猜测一下。如果你真的想确保一个,但只选择了其他两个选项之一,那么你需要xor
:
if ($required AND ($and_either XOR $or_other))
【讨论】:
【参考方案5】:您可以使用单个 if 语句和附加括号来“嵌套”if 语句。
if(test1 && (test2 || test3))
//do stuff
【讨论】:
【参考方案6】:您的逻辑是正确的,但您的 sintax 不正确,您应该按所示比较变量的值,或者干脆忽略它们,因为您正在尝试比较它们,因为它们是 TRUE。
$test1=true;
$test2=true;
$test3=false;
if($test1==true && ($test2==true || $test3==true) echo "YES";
这将输出 YES。
【讨论】:
我觉得你有点忽略了逻辑以上是关于PHP 运算符 if 语句 'and' 和 'or'的主要内容,如果未能解决你的问题,请参考以下文章