2011-06-05 94 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