这是正确的条件吗?

时间:2017-09-24 17:06:15

标签: javascript php

这是一个真实的情况吗?为什么它在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?
}

3 个答案:

答案 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)

所以比较总是正确的,因为你只使用两个相等的符号,这是一个松散的比较。如果您使用===,则结果将为false,因为stringboolean的类型不同。

另一种方法是使用数组和in_array(),它将检查一个值是否在数组的值中:

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

答案 1 :(得分:0)

在JS中,您实际上是这样做的:

if (miString == 'hello') {

也就是说逻辑OR运算符将为您提供第一个truthy值,在这种情况下为'hello',因此仅用于比较。

JS没有用于多重比较的操作员简写。您可以使用多个==操作,switch语句或某个搜索集合中项目的构造。

答案 2 :(得分:0)

你想要尝试这样的事情:

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