2017-09-24 82 views
-1

這是一個真實的情況?爲什麼它不適合我在PHP? 的Javascript:這是一個正確的條件?

var miString = 'hello'; 
if(miString == ('hello' || 'hola' || 'ciao' || 'merhaba')){ 
    alert('Welcome'); 
} 

在PHP中:

if($_SERVER['REQUEST_URI'] == ('index' || 'post' || 'about')){ 
    // why this not work for me? 
} 
+0

它不起作用,因爲這不是它的工作原理。你需要在數組中設置它們並檢查其中的一個是否在數組中。 –

回答

1

您需要完全做好每一個對比,就像這樣:

if($_SERVER['REQUEST_URI'] == 'index' || $_SERVER['REQUEST_URI'] == 'post' || $_SERVER['REQUEST_URI'] == 'about'){ 
    // why this not work for me? 
} 

因爲,你現在在做什麼,是比較$_SERVER["REQUEST_URI"]true

var_dump("hello" || "index"); // bool(true) 

所以比較始終是真實的,因爲你只用了兩個等號,這是一個寬鬆的比較。如果您使用了===,結果將是錯誤的,因爲stringboolean不是同一類型。

另一種方法是使用數組和in_array(),這將檢查一個值是否在數組中的值:

$values = ["index", "post", "about"]; 
if (in_array($_SERVER["REQUEST_URI"], $values)) { 
0

在JS,你有效地這樣做:

if (miString == 'hello') { 

也就是說,邏輯OR運算符會給你第一個真值,在這種情況下是'hello',所以只用於比較。

JS沒有多個比較的運算符簡寫。您可以使用多個==操作,一個switch語句或某個用於搜索集合中項目的構造。

0

你會想嘗試這樣的事:

var miString = 'hello'; 
if(miString == 'hello' || miString == 'hola' || miString == 'ciao' || miString == 'merhaba'){ 
alert('Welcome'); 
}