简化多个if语句

Arc*_*ect 1 php if-statement

我正在用PHP构建用户模块.它读取基于文本的用户类型,并分配一个数值来管理报表视图权限:

if ($usr_type == "Architect"){ $usr_rights = 0; }
if ($usr_type == "Director"){ $usr_rights  = 1; }
if ($usr_type == "Manager"){ $usr_rights  = 2; }
if ($usr_type == "Associate"){ $usr_rights  = 3; }
if ($usr_type == "Assistant"){ $usr_rights  = 4; }
if ($usr_type == "External"){ $usr_rights  = 5; }
Run Code Online (Sandbox Code Playgroud)

有没有更简单,更优雅的方式来做到这一点?

Cha*_*ois 5

你可以switch()用来做if工作.

switch($usr_type) {
    case "Architect":
        $usr_rights = 0;
    break;
    case "Director":
        $usr_rights  = 1;
    break;
    case "Manager":
        $usr_rights  = 2;
    break;
    case "Associate":
        $usr_rights  = 3;
    break;
    case "Assistant": 
        $usr_rights  = 4;
    break;
    case "External":
        $usr_rights  = 5;
    break;
}
Run Code Online (Sandbox Code Playgroud)

或者使用数组.

$valid_types = array(
                "Architect" => 0,
                "Director" => 1,
                "Manager" => 2,
                "Associate" => 3,
                "Assistant" => 4,
                "External" => 5
            );

if(isset($valid_types[$usr_type])) {
    $usr_rights = $valid_types[$usr_type];
}
Run Code Online (Sandbox Code Playgroud)