PHP-开关、大小写和“继续”-多选通用然后是特定

PHP-开关、大小写和“继续”-多选通用然后是特定,php,switch-statement,case,Php,Switch Statement,Case,有没有一种方法可以在不使用另一个开关盒的情况下进行常规处理,而不是特定处理 switch ($var) { case 'A' : /* SPECIFIC TREATMENT 1 */ break; case 'B' : /* SPECIFIC TREATMENT 2 */ break; case 'C' : case 'D' : case 'E' : /* GENERIC, COMMON TREATMENT */ // go o

有没有一种方法可以在不使用另一个开关盒的情况下进行常规处理,而不是特定处理

switch ($var) {
  case 'A' :
    /* SPECIFIC TREATMENT 1 */
    break;
  case 'B' :
    /* SPECIFIC TREATMENT 2 */
    break;
  case 'C' :
  case 'D' :
  case 'E' :
    /* GENERIC, COMMON TREATMENT */
    // go on, check again $var ! :(
  case 'C' :
    /* SPECIFIC TREATMENT 3 */
    break;
  case 'D' :
    /* SPECIFIC TREATMENT 4 */
    break;
  case 'E' :
    /* SPECIFIC TREATMENT 5 */
    break;
  case 'F' :
    /* SPECIFIC TREATMENT 6 */
    break;
  default :
    /* DEFAULT TREATMENT */
    break;
}
为了避免重复代码,它将非常有效。。。在第一个开关中使用另一个开关是我希望避免的事情。谢谢

$txt = "You pick the letter ".$var;
可能吗?

$txt = "You pick the letter ".$var;
    $txt = "you picked the letter ";
    $var = 'C';
    switch ($var) {
      case 'A' :
        $txt .= "A";
        break;
      case 'B' :
        $txt .= "B";
        break;
      case 'C' :
        $txt .= "C";
        break;
      case 'D' :
        $txt .= "D";
        break;
      default :
        $txt = 'you didnt pick A or B or C or D';
        break;
    }
    echo $txt;
可能吧

    $txt = "you picked the letter ";
    $var = 'C';
    switch ($var) {
      case 'A' :
        $txt .= "A";
        break;
      case 'B' :
        $txt .= "B";
        break;
      case 'C' :
        $txt .= "C";
        break;
      case 'D' :
        $txt .= "D";
        break;
      default :
        $txt = 'you didnt pick A or B or C or D';
        break;
    }
    echo $txt;
根据您随后的编辑,我将保持相同的方法

$cases = array('A','B','C','D','E','F','G');
if (in_array($var, $cases)) {
    $common = array('C','D','E');
    if (in_array($var, $common)) {
        /* GENERIC, COMMON TREATMENT */
    }
    switch ($var) {
        case 'A' :
            /* SPECIFIC TREATMENT 1 */
        break;
        case 'B' :
            /* SPECIFIC TREATMENT 2 */
        break;
        case 'C' :
            /* SPECIFIC TREATMENT 3 */
        break;
        case 'D' :
            /* SPECIFIC TREATMENT 4 */
        break;
        case 'E' :
            /* SPECIFIC TREATMENT 2 */
        break;
        case 'F' :
            /* SPECIFIC TREATMENT 3 */
        break;
        case 'G' :
            /* SPECIFIC TREATMENT 4 */
        break;

    }
} else {
    /* DEFAULT TREATMENT */

}
根据您随后的编辑,我将保持相同的方法

$cases = array('A','B','C','D','E','F','G');
if (in_array($var, $cases)) {
    $common = array('C','D','E');
    if (in_array($var, $common)) {
        /* GENERIC, COMMON TREATMENT */
    }
    switch ($var) {
        case 'A' :
            /* SPECIFIC TREATMENT 1 */
        break;
        case 'B' :
            /* SPECIFIC TREATMENT 2 */
        break;
        case 'C' :
            /* SPECIFIC TREATMENT 3 */
        break;
        case 'D' :
            /* SPECIFIC TREATMENT 4 */
        break;
        case 'E' :
            /* SPECIFIC TREATMENT 2 */
        break;
        case 'F' :
            /* SPECIFIC TREATMENT 3 */
        break;
        case 'G' :
            /* SPECIFIC TREATMENT 4 */
        break;

    }
} else {
    /* DEFAULT TREATMENT */

}
等等。您仍然会得到$common的重复,但至少比您可能想要做的要少


等等。您仍然可以重复使用$common,但至少它比您可能想做的要少。

nono这只是一个例子,我不能这么做^^@Ash_979;:你说不能这么做是什么意思?当然,如果您能够为了切换的目的对它进行比较,您可以这么做吗?除非您想显示比较操作数以外的内容?很抱歉,我没有解释清楚。再次检查代码,如果你不介意的话,这只是一个例子,我不能做^^^@Ash_:你说不能做是什么意思?当然,如果你能够为了切换的目的比较它,你可以做吗?除非您想显示比较操作数以外的内容?很抱歉,我没有解释清楚。再次检查代码,如果你一点也不介意的话!但我会选择@kolink-answer,因为在我的案例中,有些案例没有通用的处理方法。我还要编辑一次;一点也不坏!但我会选择@kolink-answer,因为在我的案例中,有些案例没有通用的处理方法。我还要编辑一次;可爱的我想这正是我想要的。编辑我的文章玛瑙。我想这正是我想要的。再次编辑我的帖子