【问题标题】:How to use Comma Separated String with switch statement如何在 switch 语句中使用逗号分隔字符串
【发布时间】:2015-08-06 05:17:47
【问题描述】:

我有一个字符串$str="1,2,4";

我还有一个 switch 语句

                    switch ($str_value) {
                        case '0':
                            $finalday='Sunday';
                            break;
                        case '1':
                            $finalday='Monday';
                            break;
                        case '2':
                            $finalday='Tuesday';
                            break;
                        case '3':
                            $finalday='Wednesday';
                            break;
                        case '4':
                            $finalday='Thursday';
                            break;
                        case '5':
                            $finalday='Friday';
                            break;
                        case '6':
                            $finalday='Saturday';
                            break;
                        default: $finalday='';
                    }

使用给定字符串中的这个语句我想显示结果

作为Day is : Monday,Tuesday,Thursday

我该怎么做?

【问题讨论】:

  • 我认为 php 有关联数组 :)

标签: php arrays switch-statement explode


【解决方案1】:

而不是switch case 做一个天数组

$days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Saturday'];
$str="1,2,4";
$val = [];
foreach(explode(',',$str) as $value){
    $val[] = $days[$value];
}
echo implode(',',$val);//Monday,Tuesday,Thursday

【讨论】:

    【解决方案2】:

    不要使用 switch 语句。使用 preg_replace:

    $final_day = $str_value;
    $final_day = preg_replace('/0/', 'Sunday', $final_day);
    // ...
    $final_day = preg_replace('/6/', 'Saturday', $final_day);
    

    你有它。

    【讨论】:

      【解决方案3】:

      如果真的要使用switch语句,把字符串分解成数组:

      myDays = explode(",", $str);
      

      然后在循环中使用 switch 语句遍历 myDays。

      【讨论】:

        【解决方案4】:

        您可以使用preg_replace_callback 并将$days 数组传递给它。
        这将获得所需的数字(使用正则表达式)并从 $days 数组返回日期。
        像这样的 -

        $days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday","Friday","Saturday"]
        preg_replace_callback('/\d+/',function($m)use($days){return $days[$m[0]];}, $str)
        
        #OUTPUTS - 
        "Monday,Tuesday,Thursday"
        

        【讨论】:

          【解决方案5】:

          希望这会有所帮助:

          <?php
          
          $str='1,2,3';
          
          $array=explode(',',$str);
          
          $finalday='';
          
          foreach($array as $a){
          
          switch ($a) {
                          case '0':
                              $finalday.=',Sunday';
                              break;
                          case '1':
                              $finalday.=',Monday';
                              break;
                          case '2':
                              $finalday.=',Tuesday';
                              break;
                          case '3':
                              $finalday.=',Wednesday';
                              break;
                          case '4':
                              $finalday.=',Thursday';
                              break;
                          case '5':
                              $finalday.=',Friday';
                              break;
                          case '6':
                              $finalday.=',Saturday';
                              break;
                          default: $finalday='';
                         }
          
          }
          
          echo substr($finalday,1);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多