0

我正在尝试学习如何使用 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

4 回答 4

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;
}
于 2013-08-19T23:45:23.910 回答
1

如果$user_data->role_id2(编辑器)您不希望发生任何事情,那么您可以取出您的case 2: break;代码。

否则,你的switch陈述对我来说很好!

编辑:我可能应该更仔细地研究这个问题;正如班级所说,您可以结合您的用户和管理员案例。你可以这样说

case 1: case 3:
    $user_data->characters = $this->character->get_many_by('user_id', $user_id);
    break;
于 2013-08-19T23:42:26.453 回答
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
 }

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

于 2013-08-19T23:48:31.417 回答
1

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

我会添加默认值:break too 以确保完整性。我的答案:

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;
}
于 2013-08-19T23:50:01.557 回答