PHP:if条件下的混乱

时间:2017-03-14 03:10:42

标签: php

我尝试使用这样的for循环打印从1到10的简单数字:

for($i = 0; $i <= 10; $i++){
  if($i != 4 || $i != 6){
      echo $i."<br/>";
  }
}

输出:

0
1
2
3
4
5
6
7
8
9
10

我只想输出0到10,但输出不应包含数字4和6.

如果我使用&&运算符,它工作正常,但如果我使用||则无效。

我不明白为什么这不起作用 - 我认为它应该适用于||

3 个答案:

答案 0 :(得分:4)

您不想打印 4或6,因此您应该使用&&

只要if($i != 4 || $i != 6)不等于4,,只要$i不等于6,语句$i就会触发。考虑4不等于6,它将触发两个个案。它将达到$i = 4,并意识到$i不等于6.这将进入条件,正如您所说它只需要对一个或另一个

声明if($i != 4 && $i != 6)表示$i不等于4 $i不等于6. 两个条件必须同时坚持。如果$i = 4$i != 6 为真,则$i != 4将为 false 。这两个条件都必须是真的,所以它会失败。从本质上讲,这可以改写为:

for($i = 0; $i <= 10; $i++){
  if($i != 4) {
    if($i != 6) {
      echo $i."<br/>";
    }
  }
}

要跳过循环中的数字4和6,您必须使用 and 条件:

for($i = 0; $i <= 10; $i++){
  if($i != 4 && $i != 6){
      echo $i."<br/>";
  }
}

希望这有帮助!

答案 1 :(得分:1)

你想要&&。它不适用于||;这意味着不同的东西。

“x&amp;&amp; y”表示“仅当x为真且y也为真时才为真;否则为假。”

“x || y”表示“如果x为真或y为真,则为true;如果两者均为假,则为false。”

($i != 4 && $i != 6)的对立(即“相反”)是($i == 4 || $i == 6)

||中混合而不交换比较也意味着,在您的情况下,“如果$i不是4,则为真,如果$i不是6,则为真。”由于其中一个案例必须始终为真,因此结果也始终如此。

答案 2 :(得分:0)

<?php for ($i=0; $i < 10 ; $i++) {
if ($i != 4 && $i !=6){
    echo $i."<br>";}} 
?>