2012-04-13 9 views
1

の共通の処置を行う方法はありますか?別のスイッチケースを使用していますか?重複したコードを避けるためにPHP - スイッチ、ケース、および "続行" - 一般的な多項選択

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

、それは(別のスイッチを使用して...本当に効率的になります)最初の1で、私は避けたいものです。ありがとう!

答えて

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

} 
+0

それほど悪くない!私のケースでは、ケースの中には一般的な治療法がないため、@kolink answerを選択します。私はもう一度編集しています。 ;) –

+0

@Ash_あなたの変更されたケースを解決する編集を追加しました – Crisp

+0

恐ろしいです!ありがとう、たくさんの男! –

4

のErm ...

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

恐らく?あなたのその後の編集に基づいて

+0

ノノノーノは一例に過ぎません^^ –

+0

@Ash_:「できません」とはどういう意味ですか? –

+0

確かに 'switch 'の目的のためにそれを比較できるのであれば、それはできますか?比較オペランド以外のものを表示したいのでないかぎり? – BenM

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; 
0
$var='c'; 
$arr=array('A'=>'xxx',B=>'xxxxxx'.......); 
echo 'some you want '.$arr($var); 
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()の繰り返しを取得しますが、少なくともそれはあなたがやりたいことよりも少なくなります。

+0

かわいい。私はこれが主に私が望むものだと思う。 (私の投稿を再び編集する) –

関連する問題