优化php开关语句并节省空间

优化php开关语句并节省空间,php,Php,我一直在写一个switch语句,它根据GET变量分配新的字符串变量 我使用的是数字1-6,仅按升序使用 看起来是这样的(少了几行): 显然,这是一种非常不专业的方式。有谁能给我一个关于如何优化这一点和节省一些空间的提示吗 提前谢谢 您可以为此创建数组映射: $map = array( '1' => 'Neu', '2' => 'Sehr Gut', ... ); foreach (explode(',', $_GET['condition']) as $nu

我一直在写一个switch语句,它根据
GET
变量分配新的字符串变量

我使用的是数字
1-6
,仅按升序使用

看起来是这样的(少了几行):

显然,这是一种非常不专业的方式。有谁能给我一个关于如何优化这一点和节省一些空间的提示吗


提前谢谢

您可以为此创建数组映射:

$map = array(
    '1' => 'Neu',
    '2' => 'Sehr Gut',
    ...
);

foreach (explode(',', $_GET['condition']) as $number) {
    if (isset($map[$number])) {
        $param = 'condition_string_'.$number;
        $$param = $map[$number];
    }
}

您可以为此创建阵列映射:

$map = array(
    '1' => 'Neu',
    '2' => 'Sehr Gut',
    ...
);

foreach (explode(',', $_GET['condition']) as $number) {
    if (isset($map[$number])) {
        $param = 'condition_string_'.$number;
        $$param = $map[$number];
    }
}
或多或少与相同的解决方案,但您不应该创建
var_1
var_2
等。如果您看到这样的模式,实际上您总是想要一个数组。这个用例实际上也是数组映射操作的定义,因此
array\u map
非常适合


或多或少与相同的解决方案,但您不应该创建
var_1
var_2
等。如果您看到这样的模式,实际上您总是想要一个数组。这个用例实际上也是数组映射操作的定义,因此
array\u map
非常适合。

您可以使用基于“,”分隔符的
explode
方法来减少代码行数。然后将值分配给
$condition\u string.*
变量

$getStr = explode(",", $_GET['condition']);

foreach($getStr as $k => $v) {
   switch($v) {
    case '1':
    $condition_string_1 = 'Neu';
    break;

    case '2':
    $condition_string_2 = 'Sehr Gut';
    break;

    case '3':
    $condition_string_3 = 'Gut';
    break;

    case '4':
    $condition_string_4 = 'In Ordnung';
    break;

    case '5':
    $condition_string_5 = 'Fehlerhaft';
    break;

    case '6':
    $condition_string_6 = 'Defekt';
    break;  
   }
}

您可以使用基于分隔符的
explode
方法减少代码行数。然后将值分配给
$condition\u string.*
变量

$getStr = explode(",", $_GET['condition']);

foreach($getStr as $k => $v) {
   switch($v) {
    case '1':
    $condition_string_1 = 'Neu';
    break;

    case '2':
    $condition_string_2 = 'Sehr Gut';
    break;

    case '3':
    $condition_string_3 = 'Gut';
    break;

    case '4':
    $condition_string_4 = 'In Ordnung';
    break;

    case '5':
    $condition_string_5 = 'Fehlerhaft';
    break;

    case '6':
    $condition_string_6 = 'Defekt';
    break;  
   }
}

每当你发现自己在使用多个变量,比如
$condition\u string\u 1
$condition\u string\u 2
,你应该意识到它应该是一个数组变量。你真的手工输入了所有这些吗。。。!?O_o@deceze:令人尴尬的是,我做到了。这是一个复制粘贴真的很多。非常感谢你的回答!我真的才刚刚开始接触每一件事;无论何时,当您发现自己正在复制和粘贴,或者通常是在重复自己的操作时,您都需要停止正在执行的操作并找到更好的解决方案。无论何时,您发现自己使用了多个变量,如
$condition\u string\u 1
$condition\u string\u 2
,等等,你应该意识到它应该是一个数组变量。你真的手工输入了所有这些吗。。。!?O_o@deceze:令人尴尬的是,我做到了。这是一个复制粘贴真的很多。非常感谢你的回答!我真的才刚刚开始接触每一件事;无论何时,当您发现您正在复制和粘贴,或者通常正在重复自己的操作时,您都需要停止正在执行的操作并找到更好的解决方案。
case
without
switch
。。。?您确定吗?
案例
不带
开关
。。。?你确定吗?