使用一个 switch 语句更改变量值

Change variable values with one switch statement

有什么方法可以遍历多个变量并使用 switch 语句更改它们的值吗?

假设我在 foreach 循环中有这些变量:

list( $variable1,$variable2,$variable3 ) = explode( '.', $variable );

所以我将字符串拆分为三个不同的变量,每个值用点分隔。如果它是“1.5.6”那么 $variable1 = 1, $variable2 = 5 and $variable3 = 6.

有时 $variable 可能只有“1”或“1.5”等,因此 $variable2 或 3 可能为空。

通过使用 switch 语句,我想将这些数字更改为其他内容

for ($i = 1; $i <= 3; $i++) {
        switch ($variable[$i]) {
        case "1": $variable[$i] = 100; break;
        case "2": $variable[$i] = 200; break;
        case "3": $variable[$i] = 300; break;
        }
    }

我用for循环遍历了3遍(我拆分的变量个数)。在第二行中,我使用了 switch 语句,而我试图做的是通过 $variable1,然后是 $variable2 和 $variable3。

为了改变他们的号码。我怎样才能使用实际名称 "variable1" 等来做到这一点?我不想有重复的代码(每个变量有 3 个 switch 语句)。是否可以在 for 循环中只用一个来完成?

如果你不使用 list() 但保留数组,它只是另一个嵌套级别 -> 另一个 foreach 循环

foreach( explode(....) as $v ) {
  switch($v....
foreach (explode('.', $variable) as $v) {
   // do as you please with your $v here.
}

使用一个数组,其中包含名为 'variable1' 等键的数组

$array = array();
list( $array['variable1'],$array['variable2'],$array['variable3']) = explode( '.', $variable );

然后:

for ($i = 1; $i <= 3; $i++) {
        switch ($array['variable'.$i]) {
        case "1": $array['variable'.$i] = 100; break;
        case "2": $array['variable'.$i] = 200; break;
        case "3": $array['variable'.$i] = 300; break;
        }
    }

那么如果你真的需要将这些变量分开,你可以这样做:

foreach($array as $k=>$v){
   $kk = $v;
}