2017-03-14 45 views
1

我只是想使用像循环从1打印简单的数字,以10:PHP:迷茫中,如果条件

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号。它的工作正常,如果我使用&&但不工作,如果使用||我不明白为什么发生这种情况,我认为它应该与||一起使用。

+0

*“我认为它应该与||一起工作。”* - 你为什么这么认为? '$我!= 4 || $ i!= 6'永远是真的。它只能是虚假的,因为'我'这是'4'和'6'在同一时间... – mkl

+0

不,它的工作与&&' –

回答

4

你不希望打印要么 4或6,所以你应该使用&&

声明if($i != 4 || $i != 6)将触发每当$i不等于4,每当$i不等于6.考虑4不等于6,这将在两个案件触发。它将达到$i = 4,并且认识到$i不等于6.这将进入条件,正如您所说的,它只适用于其中一个或另一个

声明if($i != 4 && $i != 6)意味着$i不等于4 $i不等于6 两个条件必须同时成立。当$i = 4,$i != 6将为为真,但是$i != 4将为。这两个条件都必须是真实的,所以它会失败。从本质上讲,这可以被改写为:

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

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

“x & & y”表示“只有当x为真且y也为真;否则为false”。

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

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

||中混合并且不交换比较也意味着在您的情况下,“如果$i不是4,则返回true,否则如果$i不是6,则返回true。由于其中一种情况必须始终如此,其结果也总是如此。

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

我需要解释...我知道该怎么做。 –

+0

因为你的条件是选择AND操作,而不是OR操作的更多细节,你想阅读这个http://php.net/manual/en/language.operators.php –