我尝试使用这样的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.
如果我使用&&
运算符,它工作正常,但如果我使用||
则无效。
我不明白为什么这不起作用 - 我认为它应该适用于||
。
答案 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>";}}
?>