2012-07-23 117 views
5

可能重複:
Short hand to do something like: if($variable == 1 || $variable == 「whatever」 || $variable == '492') .PHP:如果等於B或C或d

這是

if ($a==b||$a==c||$a==$d){ ... 

來描述這種邏輯的最短途徑。 我的想法是這樣

if ($a==($b||$c||$d)) { ... 

,但是這不是一個有效的代碼。有什麼建議麼?

+0

這種方法有什麼問題? – bugwheels94 2012-07-23 11:24:36

+2

這是不正確的,因爲你試圖做布爾或||在非布爾值之間。 – rkosegi 2012-07-23 11:24:42

+3

使用['in_array'](http://php.net/in_array)。 – deceze 2012-07-23 11:24:57

回答

11

你可以使用in_array

if(in_array($a, array($b,$c,$d))){ 
    //do something 
} 
+1

+1優秀的技術 – mrsrinivas 2012-07-23 11:27:00

+0

公頃,我們相信 – bigkm 2012-07-23 11:27:54

+0

你應該已經關閉這個問題作爲重複... – 2012-07-23 11:40:32

1

兩者都是不一樣的||是布爾運算符,將總是返回truefalse。因此,在第二個聲明中,您正在比較$a是否爲truefalse

您可以使用in_array比較,如果存在array($b, $c, $d)$a

1

不知道爲什麼你想要做一些事情,但你可以把B,C,d數組並調用in_array功能來搜索元素。 但我不明白爲什麼你想簡短的代碼做簡短而不簡單。

+0

因爲我有大約15個值,我想讓我在IF – Martin 2012-07-23 11:30:59

+0

如此in_array我建議和其他。 – 2012-07-23 11:31:54

2

這是有效的代碼,但在邏輯上不正確。

如果你有很多值,那麼你可以做這樣的事情。

if(in_array($a,array($b,$c,$d))) { 
} 
+0

很好的答案,但它與@Engineer在一分鐘前寫的一樣。 – Fluffeh 2012-07-23 11:27:42

+0

@Fluffeh:和ascii-lime寫的一樣9個月前。 – 2012-07-23 11:31:51

+0

@FelixKling毫無疑問,有重複,只是看看這個問答看到重複:) – Fluffeh 2012-07-23 11:33:13

相關問題