2011-05-25 54 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(因此回聲)