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
$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 に答える
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 に答える
0
$var='c';
$arr=array('A'=>'xxx',B=>'xxxxxx'.......);
echo 'some you want '.$arr($var);
于 2012-04-13T14:53:50.977 に答える