繁体   English   中英

使用PHP开关语句

[英]Working with PHP switch statements

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

您可以删除案例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;
}

如果您不希望$user_data->role_id2 (Editor)发生任何事情,则可以取出case 2: break; 码。

否则,您的switch语句对我来说看起来不错!

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

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

对我来说似乎很好。 对于情况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
 }

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

我最喜欢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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM