2017-09-24 83 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'); 
}