2011-04-08 3 views
8

私は単一のスイッチケースで複数の値を渡したいと思います。私はそれをやろうとしているように彼らの方法は不可能であることを理解しています。オンラインで各ケースを配置するのに手間がかかりますか?Switchステートメント>複数の大文字小文字を1つのケースに含めることは可能ですか?

switch(get_option('my_template')) 
{ 
case 'test1', 'test2': 
return 850; 
break; 

default: 
return 950; 
} 
+0

何?もちろんPHPには、Bashのような高度な言語で見られる機能はありません –

答えて

24
switch(get_option('my_template')) { 
    case 'test1': 
    case 'test2': 
     return 850; 
     break;  
    default: 
     return 950; 
} 
1

私は、これはあなたが得ることができる限り近いと思います。

switch(get_option('my_template')) 
{ 
    case 'test1': 
    case 'test2': 
    return 850; 
    break; 

    default: 
    return 950; 
} 

訂正して編集しました。

+0

各項目がリターンを行うことを前提にすると、break文は必要ありません。私は代わりに、後で事実の後に関数の中の値が必要な場合に備えて変数を850または950に設定することをお勧めします。そして、疑わしい擬似標準であるreturn文が1つしかありません。 – Horus

1

これはどう

switch(get_option('my_template')) 
{ 
    case 'test1': 
    case 'test2': 
     return 850; 
     break; 

    default: 
     return 950; 
} 
2

、あなたのケースにbreak;を使用していない限り、実行はちょうど次の場合に該当します。あなたは、一緒にあなたの例それぞれを積層することによってあなたの利点にこれを使用することができます。例:

switch(get_option('my_template')) { 
    case 'test1': 
    case 'test2': 
    return 850; 
    break; 
    default: 
    return 950; 
} 

何があるため、実行は、すなわちすぐに(その場合には終了していないとき、「TEST1」の場合にはbreak;はありませんのでその中のロジック)、コントロールは 'test2'の場合に落ち、breakステートメントで終了します。

この場合、returnステートメントは単独でswitchから抜け出すため、この場合はbreakは必要ありません。

+0

+1は、breakステートメントをクリアするための提案です。ありがとう! –

2

スイッチの構造内では、1行に 'や'のような何かをする方法はないと思います。これは最も簡単な方法のようになります。

switch(get_option('my_template')) 
{ 
    case 'test1': 
    case 'test2': 
    return 850; break; 

    default: 
    return 950; 
} 

しかし、あなただけの値を返すと、コードを実行されていない場合は特に、私は次のことをやってreccomendう:

$switchTable = array('test1' => 850, 'test2' => 850); 
$get_opt = get_option('my_template'); 
if in_array($get_opt, $switchTable) 
    return $switchTable[$get_opt]; 
else return 950; 
+0

配列解決のための+1 – drudge

+0

は、もしあなたがif/else 'return in_array($ get_opt、$ switchTable)を好むなら、3項を使うことができますか? $ switchTable [$ get_opt]:950; ' –

+0

+1興味深いですね。私はそれをスピンします。 –

関連する問題