这是一个真实的情况吗?为什么它在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)
所以比较总是正确的,因为你只使用两个相等的符号,这是一个松散的比较。如果您使用===
,则结果将为false,因为string
与boolean
的类型不同。
另一种方法是使用数组和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');
}