2013-08-19 170 views
0

我正在嘗試學習如何使用PHP switch語句。我想要做的是檢查用戶角色ID。使用PHP switch語句

  • 如果用戶是guest(角色ID爲1),那麼我想運行一個特定的查詢。
  • 如果用戶是一個編輯器(角色ID爲2),我不希望他們做任何事情。
  • 如果用戶是管理員(角色ID爲3),我希望他們運行特定的查詢。
  • 如果用戶是網站站長(角色ID爲4),那麼我希望他們運行特定的查詢。

我是否正在形成這個權利,我可以爲案例2打破一下,因爲我不希望他們爲編輯做任何事情。

switch ($user_data->role_id) 
{ 
    // User 
    case 1: 
     $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
     break; 
    // Editor 
    case 2: 
     break; 
    // Admins 
    case 3: 
     $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
     break; 
    // Webmaster 
    case 4: 
     $user_data->characters = $this->character->get_all(); 
     break; 
} 
+1

對我來說還好吧。你有沒有得到你想要的結果? – michi

回答

1

我喜歡Class'的答案最多。但是,這是一個典型的情況,您的交換機可以佔用更多的空間以提高清晰度。您已經定義了用戶角色,雖然用戶和管理員可能有共同點,但他們未來可能不會。情況2現在沒有用,但可能稍後會有用。

爲了完整性,我會添加默認值:break。 我的回答:

switch ($user_data->role_id) {  
    case 1: // User 
     $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
     break;  
    case 2: // Editor 
     break; 
    case 3: // Admin 
     $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
     break; 
    case 4: // Webmaster 
     $user_data->characters = $this->character->get_all(); 
     break; 
    default: 
     break; 
} 
1

如果你不希望任何事情發生,如果$user_data->role_id2(編輯),那麼你可以拿出你case 2: break;代碼。

否則,您的switch聲明對我來說很好!

編輯:我可能應該更仔細地看待這個問題;正如Class所說,您可以將您的用戶和管理員案例結合起來。你說

case 1: case 3: 
    $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
    break; 
3

你可以刪除2的情況下,結合1 & 3,因爲它們是相同的,並添加默認打破

switch ($user_data->role_id){ 
    // User 
    case 1: 
    // Admins 
    case 3: 
     $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
     break; 
    // Webmaster 
    case 4: 
     $user_data->characters = $this->character->get_all(); 
     break; 
    default: 
     break; 
} 
+1

因此,對於兩個情況是相同的,你不要在第一個中斷。 – user2576961

+0

@ user2576961簡單回答是的。它有點像'if(case == 1 || cas​​e == 3)'這樣做。稍後如果用戶和管理區域沒有相同的項目執行恢復到以前的交換w /默認。 – Class

1

這似乎對我很好做到這一點。 對於情況2,你應該使用默認值!

switch ($user_data->role_id) 
{ 
// User 
case 1: 
    $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
    break; 
// Admins 
case 3: 
    $user_data->characters = $this->character->get_many_by('user_id', $user_id); 
    break; 
// Webmaster 
case 4: 
    $user_data->characters = $this->character->get_all(); 
    break; 
default: 

    break; 
//Editor and all the other non specifed 
} 

所以默認的是你沒有前面提到的所有案件。