为什么它回显'两个变量0'
<?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 ...例如,0
和1
(如我的例子中所示)..或{{1 }}和1
,1
和2
等...
除了两者都是0之外的任何东西,它都转到if语句。
答案 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定律”。