2015-01-15 58 views
0

我只是想知道如果我應該使用'開關'或'如果...其他如果'在PHP中。 (示例代碼打擊)。我有一個谷歌搜索,但我讀過的文章都有點老了。 我也想知道是否明智地做我在Switch語句中做的事情。php開關vs如果elseif

switch ($name) { 
    case 'name1': 
     $data['pageName'] = 'name1'; 
     $data['pageTitle'] = 'Name 1'; 
     $this->view('name1/index', $data); 
     break; 
    case 'name2': 
     $data['pageName'] = 'name2'; 
     $data['pageTitle'] = 'Name 2'; 
     $this->view('name2/index', $data); 
     break; 
    case 'name3': 
     $data['pageName'] = 'name3'; 
     $data['pageTitle'] = 'Name 3'; 
     $this->view('name3/index', $data); 
     break; 
    case 'name4': 
     $data['pageName'] = 'name4'; 
     $data['pageTitle'] = 'Name 4'; 
     $this->view('name4/index', $data); 
     break; 
    default: 
     $data['pageName'] = 'default'; 
     $data['pageTitle'] = 'Default'; 
     $this->view('default/index', $data); 
} 



if($name = 'name1') { 
    $data['pageName'] = 'name1'; 
    $data['pageTitle'] = 'Name 1'; 
    $this->view('name1/index', $data); 
} else if($name = 'name2') { 
    $data['pageName'] = 'name2'; 
    $data['pageTitle'] = 'Name 2'; 
    $this->view('name2/index', $data); 
} else if($name = 'name3') { 
    $data['pageName'] = 'name3'; 
    $data['pageTitle'] = 'Name 3'; 
    $this->view('name3/index', $data); 
} else if($name = 'name4') { 
    $data['pageName'] = 'name4'; 
    $data['pageTitle'] = 'Name 4'; 
    $this->view('name4/index', $data); 
} else { 
    $data['pageName'] = 'default'; 
    $data['pageTitle'] = 'default'; 
    $this->view('default/index', $data); 
} 
+0

我使用開關時,我有多個elseif,只爲了更好的可讀性。我會讓其他人說如果有任何性能增益 – Ebpo 2015-01-15 15:49:17

+2

都不。你的代碼結構和重複調用一個數組映射。 – mario 2015-01-15 15:49:32

回答

3

您正在重複自己很多,相反,您可以使用數組,isset和一個if語句:

$names = [ 
      'name1' => 'Name 1', 
      'name2' => 'Name 2', 
      'name3' => 'Name 3', 
      'name4' => 'Name 4', 
      'default' => 'default' 
]; 

$name = isset($names[$name]) ? $name : 'default'; 

$data['pageName'] = $name; 
$data['pageTitle'] = $names[$name]; 

$this->view($name . '/index', $data); 
+0

這與op的代碼+1有什麼不同? – 2015-01-15 15:55:26