【问题标题】:is this a correct conditional? [duplicate]这是一个正确的条件吗? [复制]
【发布时间】:2017-09-24 17:06:15
【问题描述】:

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

【问题讨论】:

  • 它不起作用,因为它不是这样工作的,期间。您需要将它们设置在一个数组中并检查其中一个是否在数组中。

标签: javascript php


【解决方案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)) {

【讨论】:

    【解决方案2】:

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

    if (miString == 'hello') {
    

    也就是说,逻辑或运算符会给你第一个真值,在这种情况下是'hello',因此只有它用于比较。

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

    【讨论】:

      【解决方案3】:

      你会想尝试这样的事情:

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

      【讨论】:

        猜你喜欢
        • 2019-09-19
        • 2014-04-06
        • 1970-01-01
        • 2020-02-09
        • 2021-07-16
        • 2020-09-02
        • 1970-01-01
        • 1970-01-01
        • 2013-11-05
        相关资源
        最近更新 更多