PHP如果两个变量都是0

时间:2017-03-30 17:07:13

标签: php

为什么它回显'两个变量0'

https://3v4l.org/E530h

<?php

  $QuantityOrdered = '1';
  $QuantityShipped = '0';
  echo '<br />' . $QuantityOrdered . ' & ' . $QuantityShipped . '<br />';

  if ($QuantityOrdered != '0' && $QuantityShipped != '0') {
    echo 'at least one variable is not 0';
  }

  else {
    echo 'both variables 0';
  }

尝试获取它,以便如果BOTH $QuantityOrdered$QuantityShipped为0,则转到else语句。

如果$QuantityOrdered$QuantityShipped不是BOTH 0 ...例如,01(如我的例子中所示)..或{{1 }}和112等...

除了两者都是0之外的任何东西,它都转到if语句。

2 个答案:

答案 0 :(得分:0)

如果您使用&amp;&amp; (和)条件然后两个条件都需要为真,所以如果$ QuantityOrdered!=&#39; 0&#39; true和$ QuantityShipped!=&#39; 0&#39;如果为true,则执行此代码,以便您的两个条件都需要为true 所以这个条件不起作用

 if ($QuantityOrdered != '0' && $QuantityShipped != '0') {
  echo 'at least one variable is not 0';
}

如果要检查一个值为true,则执行此代码,然后使用或(||)condition

if ($QuantityOrdered != '0'|| $QuantityShipped != '0') {
  echo 'at least one variable is not 0';
}
else {
 echo 'both variables 0';
 }

了解更多信息

http://www.w3resource.com/php/operators/logical-operators.php

答案 1 :(得分:0)

将这样的逻辑条件可视化的常用方法是作为真值表:

  | 0 | 1
--+------
0 |   |  
--+---+--
1 |   |  

在顶部,我们有$QuantityOrdered的可能值;在旁边,$QuantityShipped的值。在网格中,我们放置表达式的结果;我将使用T表示true,将F表示为false。

根据您当前的情况$QuantityOrdered != '0' && $QuantityShipped != '0',我们得到了这个:

  | 0 | 1
--+------
0 | F | F
--+---+--
1 | F | T

我们使用1表示“非0”,因此我们表中唯一的组合是两个变量都是1。

但你真正想要的是:

  | 0 | 1
--+------
0 | F | T
--+---+--
1 | T | T

您希望条件在所有情况下都为真,除了一个,两个变量都为0的情况。

写这个的一种方法是从相反的方向开始。对于$QuantityOrdered == '0' && $QuantityShipped == '0',我们得到了这个:

  | 0 | 1
--+------
0 | T | F
--+---+--
1 | F | F

所以我们可以写! ( $QuantityOrdered == '0' && $QuantityShipped == '0' )

事实证明这相当于$QuantityOrdered != '0' || $QuantityShipped != '0'。填写表格,你会看到。

这种等价,其中“NOT(a AND b)”等同于“(NOT a)OR(NOT b)”,称为“De Morgan定律”。