2011-06-05 84 views
0

我正在研究一些我自己没有写过的代码示例,并且我发现这个函数在我看来很糟糕,至少效率不高。你能提出改进方法吗?我认为这可能适用于关联数组,但不知道如何。改进许多case switch语句

其他任何可以重写的方法?

$op = ''; 
    switch($style) { 
     case 'f': 
     case 'F': { 
      $op = 'f'; 
      break; 
     } 
     case 'f*': 
     case 'F*': { 
      $op = 'f*'; 
      break; 
     } 
     case 'B': 
     case 'FD': 
     case 'DF': { 
      $op = 'B'; 
      break; 
     } 
     default: { 
      if (!empty($default)) { 
       $op = $this->dosomething($default, ''); 
      } else { 
       $op = ''; 
      } 
     } 
    } 
    return $op; 
+2

它试图做什么? – BoltClock 2011-06-05 08:38:49

+1

它对我来说很好。简洁高效,易于阅读。你还需要什么。 – Petah 2011-06-05 08:39:47

+3

@Petah:你是作者吗? – BoltClock 2011-06-05 08:40:55

回答

3

要使用assoc命令数组,你需要做到以下几点:

$styles = array(
    'S' => 'S', 
    'D' => 'S', 
    's' => 's', 
    'd' => 's', 
    ... etc ... 
); 

if (isset($styles[$op])) { 
    return $styles[$op]; 
} elseif (!empty($default)) { 
    return $this->getPathPaintOperator($default, ''); 
} else { 
    return ''; 
} 
0

没有任何需要添加额外的大括号,你可以改变

case 'df': { 
     $op = 'b'; 
     break; 
    } 

case 'df': 
     $op = 'b'; 
     break; 
+1

性能提升! – 2011-06-05 08:51:29

+0

@OZ_哪种性能提升?有还是没有? – switch 2011-06-05 08:54:06

+0

@switch这是开玩笑。尝试使用Petah的答案。 – 2011-06-05 08:54:27