使用PHP switch语句

时间:2013-08-19 23:39:49

标签: php switch-statement

我正在尝试学习如何使用PHP switch语句。我想要做的是检查用户角色ID。

  • 如果用户是访客(角色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;
}

4 个答案:

答案 0 :(得分: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 :(得分: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;

答案 2 :(得分: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
 }

因此默认情况适用于您之前未提及的所有情况。

答案 3 :(得分:1)

我最喜欢Class'的回答。但是,这是一种典型情况,允许您的开关占用更多空间以便清晰。您已定义用户角色,虽然用户和管理员可能有共同点,但将来可能不会。案例2现在没用,但可能会在以后。

我会添加默认值:中断也是为了完整性。 我的回答:

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;
}