2010-08-10 63 views
0

是否有寫下面的查詢更簡單的方法(以查看是否有我們的三個變量都等於相同的值):如果這個或這或本==這

if ($firstvariable == 'ourvalue' OR $secondvariable == 'ourvalue' OR $thirdvariable == 'ourvalue') 
+1

非常好奇,這些其他人客觀公佈了更復雜的解決方案,您的簡單問題... – 2010-08-10 18:49:39

+0

@Mike我不認爲這種解決方案更復雜,我通常使用數組做這種操作。 if(new int [] {12,312,234,12,323,12} .Contains(someValue))更容易閱讀併爲每個可能的值編寫測試。 – albertein 2010-08-10 18:52:31

+0

不確定您的代碼段是否僅用於提問,但我會將字符串「ourvalue」設置爲變量。防止重複自己。 – 2010-08-10 19:04:22

回答

4

都能跟得上。這就像它變得簡單一樣。

+0

爲什麼有人投票呢?其他答案並不比OP的問題簡單。 – 2010-08-10 18:47:03

+0

不是?是在我們的其他答案中寫了3次「ourvalue」嗎?其他答案中是否有3個相等運算符和2個邏輯或? – Fosco 2010-08-10 18:49:06

+1

他們創建數組,搜索數組並在相等運算符都是必要時丟棄數組? – 2010-08-10 18:50:40

3

試試這個:

if (in_array('ourvalue', array($first, $second, $third))) doSomething(); 

我們正在做的是創建一個包含你要測試的變量的值數組,然後我們讓in_array功能尋求針值('ourvalue ')在我們剛剛創建的數組中。

+0

你錯過了一個''',修正了。 – 2010-08-10 18:44:38

+0

+1像我一樣思考。 – Fosco 2010-08-10 18:45:34

+0

@chpwn謝謝你的失蹤)。 @Fosco :) – albertein 2010-08-10 18:47:15

5

性能的角度來看,這可能是一個壞主意,但刪除重複代碼,我認爲這會工作:

if (in_array("ourvalue",array($firstvariable,$secondvariable,$thirdvariable))) { 
+0

+1'in_array()'不一定限於*檢查某個硬編碼*值的變量* :) – BoltClock 2010-08-10 18:45:11

+0

我幾乎不會說這個更簡單。 – 2010-08-10 18:47:32

+0

+1對於像我這樣的思考:p :) – albertein 2010-08-10 18:50:26

1
if (in_array("ourvalue",array($firstvariable,$secondvariable,$thirdvariable))) 
    echo "TEST"; 
0

下面是一個簡單竅門:你可以用Wolfram Alpha簡化一些邏輯表達式,例如:(x==a || a==b || x==x)可以簡化爲"True"

試着用你給的例子,它出現not to be able to be simplified

+0

對不起,但事實並非如此,這裏的表達式是'(a == x || a == y || a == z) – albertein 2010-08-10 18:58:07

+0

呃,我想你我錯誤地閱讀了我的答案。我沒有提供具體的解決方案,而是Wolfram Alpha如何簡化邏輯表達式的一個例子。 – Adam 2010-08-11 06:54:18