2011-05-25 59 views
2

我试图在PHP中一起扔东西。我似乎无法得到这个简单的工作。PHP如果或如果somethingelse

我想要的结果是,如果$ X = 4,5或6的输出应为你好x是(的$ x值)

这里是代码:

<?php 
    $x = 1; 
if ($x != 4 || $x != 5 || $x != 6) 
    {echo "hello "; 
    echo "x is $x";} 
?> 

在输出上面的示例是“你好x是1”

但是,如果我将代码的第一行更改为$ x = 4,则输出应该为空时,预期输出为“hello x is 4”。

谢谢, 克里斯

+1

你有两个相互矛盾的要求,你的第一部分说如果x是4,5或6,你想要打印x的值。但是你的第二部分说你想要相反的东西。这是什么? – GWW 2011-05-25 18:03:52

+1

哇,今天人们迅速投降...请澄清你的问题,正如@GWW所说,你给出了混合信息。 – 2011-05-25 18:06:25

回答

1

你有相反的逻辑。您需要

if ($x == 4 || $x == 5 || $x == 6) 
+0

我明白我现在所做的。我认为最好的解决方案是:if($ x!= 4 && $ x!= 5 && $ x!= 6) – Chris 2011-05-25 18:17:06

+0

@Chris:那是我提出的建议,但人们投下我的答案如此之快...无论如何,很高兴你想出来了。 – 2011-05-25 20:01:38

1

试试这个:

$x = 4; 
if ($x == 4 || $x == 5 || $x == 6) 
{echo "hello "; 
echo "x is $x";} 
2

我想要的结果是,如果$ X = 4,5或6的输出应为你好x是在这种情况下

(的$ X的值),这样的:

if ($x != 4 || $x != 5 || $x != 6) 

应该是:

if ($x == 4 || $x == 5 || $x == 6) 

或:

if (in_array($x, array(4,5,6))) 
0

我能想到的最简短的版本是:

if (in_array($x, array(4,5,6))) { 
    echo 'hello, x is ' . $x; 
} 

如果$x是以下值列表上方的匹配条件:456

欲了解更多信息请登录in_array() documentation

为什么你的代码失败

如果内它表达的任何是匹配的预期是因为你已经创建了替代(or||)的条件你的代码没有工作的原因匹配。

这意味着,由于至少有一个表达式(例如$x != 4,但在$x等于1的情况下,所有表达式都匹配)匹配,所以指令被执行。

1

您的代码运行正常 - 您写入的条件始终为真。也就是说,x总是不是4或者不是5或者不是6。

如果你想检查平等,写if ($x==4 || $x==5 || $x==6)

0

试试这个代码:

<?php 
    $x = 1; 
if ($x == 4 || $x == 5 || $x == 6) 
    {echo "hello "; 
    echo "x is $x";} 
?> 
0

逻辑表OR(||):

牛逼|| T == T

T || F == T

F || T == T

F || ˚F==˚F

为逻辑表AND(& &):

Ť& &Ť==Ť

Ť& &˚F==˚F

˚F& &Ť==˚F

F & & F == F

因此,对于1的情况:

1!= 4 || 1!= 5 || 1!= 6

T || T || Ť== T(因此回声)

对于4的情况下:

4 = 4 || 4!= 5 || 4!= 6

F || T || T == T(因此回声)