假设我有一个这样的开关语句:
switch($myVar)
{
case 'A':
$special = 1;
$total = $special + 5;
break;
case 'B':
$special = 2;
$total = $special + 5;
break;
case 'C':
$special = 3;
$total = $special + 5;
break;
}
正如您在上面所看到的,唯一不同于我的switch语句的情况是变量$special
。如果情况是A,则其值应为1;如果情况为B,则其值应为2,依此类推。除此之外,其余代码保持不变。有没有办法组织这个switch语句来删除重复的代码:
$total = $special + 5
谢谢
答案 0 :(得分:4)
将重复代码移至切换后。
switch($myVar)
{
case 'A':
$special = 1;
break;
case 'B':
$special = 2;
break;
default:
$special = 0; //setup a default value to prevent undefined $special errors.
}
$total = $special + 5;
答案 1 :(得分:2)
为什么不
$special = ('A' == $myVar ? 1 : 2);
$total = $spacial + 5;
修改强>
问题已经改变,这是一个更新
$lookup = array( 'A' => 1, 'B' => 2, 'C' =>3); // You can just initialize this once
// maybe a static variable of a class etc.
$special = $lookup[$myVar];
if (!isset($special)) { $special = /* Some default value */ }; // If this is necessary
$total = $special + 5;
答案 2 :(得分:2)
switch($myVar)
{
case 'A':
$special = 1;
break;
case 'B':
$special = 2;
break;
}
$total = $special + 5;
你可以在切换块之后放一次。您不必重复此代码,因为无论如何,如果您将它放在switch语句之后,它将会发生。
答案 3 :(得分:2)
以下方式怎么样?
$special = array(
'A' => 1,
'B' => 2
);
$total = ($special[$myVal] || 0) + 5;
答案 4 :(得分:1)
switch($myVar) {
case 'A':
$special = 1;
break;
case 'B':
$special = 2;
break;
default:
$special = 0;
}
$total = $special + 5;