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)

对于$requiredFieldTRUE,它只需要填写 - 而对于第二部分:($optional1 || $optional2) optional1optional2 都可以。

编辑:

重新阅读问题后,似乎我可能误解了您。如果用户必须输入一个特定的信息,并且必须从两个选项中只选择一个(而不是两者) - 那么以下应该使用。

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'的主要内容,如果未能解决你的问题,请参考以下文章

PHP判断语句,and和or的使用

在 if with and/or 语句 PHP 中正确使用括号

练习--第一次课(运算if while 字符编码)

php SQL语句有and也有or应该怎么处理呢?

带有 OR 运算符的 PHP if 语句 [关闭]

python-逻辑运算:not\and\or和布尔值:True\False