1

有没有办法在使用另一个开关盒的情况下进行通用处理然后进行特定处理?

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;
}

为了避免重复代码,它会非常有效......我想避免在第一个中使用另一个 Switch() 。谢谢 !

4

5 回答 5

4

嗯...

$txt = "You pick the letter ".$var;

或许?

于 2012-04-13T14:40:36.817 回答
3
    $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;
于 2012-04-13T14:49:04.620 回答
2
$cases = array('A','B','C','D');
if (in_array($var, $cases)) {
    /* 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;

    }
} 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 */

}
于 2012-04-13T14:53:08.137 回答
2
$common = function() use (&$var) {
    // do stuff that is common to several cases
};
switch($var) {
    case 'A':
        $common();
        // now specific stuff
        break;
    case 'B':
        $common();
        // specific
        break;
}

等等。你仍然会得到 的重复$common(),但至少它比你可能想要做的要少。

于 2012-04-13T14:59:07.090 回答
0
$var='c';
$arr=array('A'=>'xxx',B=>'xxxxxx'.......);
echo 'some you want '.$arr($var);
于 2012-04-13T14:53:50.977 回答