【问题标题】:PHP If Statement with Multiple Conditions具有多个条件的 PHP If 语句
【发布时间】:2011-04-08 10:03:59
【问题描述】:

我有一个变量$var

如果$var 等于以下任何值abcdefhijklmnop,我想要回显"true"。有没有办法用像&&这样的单一语句来做到这一点??

【问题讨论】:

    标签: php if-statement


    【解决方案1】:

    一种优雅的方式是动态构建一个数组并使用in_array()

    if (in_array($var, array("abc", "def", "ghi")))
    

    switch statement 也是一种选择:

    switch ($var) {
    case "abc":
    case "def":
    case "hij":
        echo "yes";
        break;
    default:
        echo "no";
    }
    

    【讨论】:

    • 我在 php3 中发誓我曾经做过 if($var == 'abc'|'xyz'|'cbs') 也许这只是一个梦:p
    • 多个和&&怎么样?
    【解决方案2】:
    if($var == "abc" || $var == "def" || ...)
    {
        echo "true";
    }
    

    我认为在这里使用“Or”而不是“And”会有所帮助

    【讨论】:

      【解决方案3】:

      你可以使用php的in_array函数

      $array=array('abc', 'def', 'hij', 'klm', 'nop');
      
      if (in_array($val,$array))
      {
        echo 'Value found';
      }
      

      【讨论】:

        【解决方案4】:

        不知道,为什么要使用&&。有一个更简单的解决方案

        echo in_array($var, array('abc', 'def', 'hij', 'klm', 'nop'))
              ? 'yes' 
              : 'no';
        

        【讨论】:

          【解决方案5】:

          您可以使用布尔运算符或:||

          if($var == 'abc' || $var == 'def' || $var == 'hij' || $var == 'klm' || $var == 'nop'){
              echo "true";
          }
          

          【讨论】:

            【解决方案6】:

            我发现这个方法对我有用:

            $thisproduct = "my_product_id";
            $array=array("$product1", "$product2", "$product3", "$product4");
            if (in_array($thisproduct,$array)) {
                echo "Product found";
            }
            

            【讨论】:

            • in_array() 是 7 年前推荐的。此仅代码答案不会为页面添加任何新值。
            【解决方案7】:

            你可以试试这个:

            <?php
                echo (($var=='abc' || $var=='def' || $var=='hij' || $var=='klm' || $var=='nop') ? "true" : "false");
            ?>
            

            【讨论】:

              【解决方案8】:

              试试这段代码:

              $first = $string[0]; 
              if($first == 'A' || $first == 'E' || $first == 'I' || $first == 'O' || $first == 'U') {
                 $v='starts with vowel';
              } 
              else {
                 $v='does not start with vowel';
              }
              

              【讨论】:

                【解决方案9】:

                最好使用数组并在循环中逐一比较每个值。它可以改变测试数组的长度。编写一个带2个参数的函数,1个是测试数组,另一个是要测试的值。

                $test_array = ('test1','test2', 'test3','test4');
                for($i = 0; $i < count($test_array); $i++){
                   if($test_value == $test_array[$i]){
                       $ret_val = true;
                       break;
                   }
                   else{
                       $ret_val = false;
                   }
                }
                

                【讨论】:

                  【解决方案10】:

                  很抱歉重新提出这个问题,但我偶然发现它并相信它为问题增加了价值。

                  PHP 8.0.0^ 中,您现在可以像这样使用匹配表达式:

                  <?php
                  echo match ($var) {
                      'abc','def','hij','klm' => 'true',
                  };
                  ?>
                  //echos 'true' as a string
                  

                  Working link from OnlinePHPfunctions

                  PHP Manual

                  【讨论】:

                    【解决方案11】:

                    我不知道 $var 是否是一个字符串,而您只想找到那些表达式,但在这里它可以是任何一种方式。

                    尝试使用 preg_match http://php.net/manual/en/function.preg-match.php

                    if(preg_match('abc', $val) || preg_match('def', $val) || ...)
                       echo "true"
                    

                    【讨论】:

                    • -1 哇!你知道你刚刚造成了多少开销吗?天哪,伙计!
                    • 更不用说模式中缺少的分隔符了。
                    猜你喜欢
                    • 2014-10-20
                    • 2023-03-31
                    • 1970-01-01
                    • 2016-12-13
                    • 2019-10-20
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多