Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 简化多个if语句_Php_If Statement - Fatal编程技术网

Php 简化多个if语句

Php 简化多个if语句,php,if-statement,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

我正在用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; }
有更简单、更优雅的方法吗?

您需要使用

你需要使用


您可以使用数组函数
array\u map
。如果我们考虑“建筑师”、“导演”等都是关键。然后,我们可以使用映射结构来组合键及其值

<?php
$usr_rights = array(0, 1, 2, 3, 4, 5);
$usr_types = array("Architect", "Director", "Manager", "Associate", "Assistant","External");
$c = array_combine($usr_types,$usr_rights);
print_r($d);

// Test
echo $c["Architect"]; // output: 0
?>


请参阅文档:

您可以使用数组函数
array\u map
。如果我们考虑“建筑师”、“导演”等都是关键。然后,我们可以使用映射结构来组合键及其值

<?php
$usr_rights = array(0, 1, 2, 3, 4, 5);
$usr_types = array("Architect", "Director", "Manager", "Associate", "Assistant","External");
$c = array_combine($usr_types,$usr_rights);
print_r($d);

// Test
echo $c["Architect"]; // output: 0
?>

请参阅文档:

您可以使用
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;
}
或者使用数组

$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];
}
您可以使用
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;
}
或者使用数组

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

我看到了两种不同于当前解决方案的解决方案

一,。做一个如下的switch语句:

switch($usr_type) {

    case "Architect":
        $usr_rights = 0;
    break;

    case "Director":
        $usr_rights = 1;
    break;

    //...

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

if(array_search($usr_type, $arr) !== false)
    $usr_rights = array_search($usr_type, $arr);
有关
switch()
的更多信息,请参阅手册:

二,。或者制作一个数组并按如下方式在其中搜索:

switch($usr_type) {

    case "Architect":
        $usr_rights = 0;
    break;

    case "Director":
        $usr_rights = 1;
    break;

    //...

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

if(array_search($usr_type, $arr) !== false)
    $usr_rights = array_search($usr_type, $arr);

我看到了两种不同于当前解决方案的解决方案

一,。做一个如下的switch语句:

switch($usr_type) {

    case "Architect":
        $usr_rights = 0;
    break;

    case "Director":
        $usr_rights = 1;
    break;

    //...

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

if(array_search($usr_type, $arr) !== false)
    $usr_rights = array_search($usr_type, $arr);
有关
switch()
的更多信息,请参阅手册:

二,。或者制作一个数组并按如下方式在其中搜索:

switch($usr_type) {

    case "Architect":
        $usr_rights = 0;
    break;

    case "Director":
        $usr_rights = 1;
    break;

    //...

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

if(array_search($usr_type, $arr) !== false)
    $usr_rights = array_search($usr_type, $arr);

关联数组确实是最好的选择此处关联数组确实是最好的选择此处仅供参考:如果你还没有看到它,你可以在这里参观一下:看看网站是如何工作的!仅供参考:如果你还没有看到它,你可以在这里参观一下:看看网站是如何运作的@凯西:更好的建模方法是使用地图结构。在这个问题中,有两个元素:键及其值。它有很多用途,比如:或。对,但当我评论时,你没有任何代码,你只是说使用数组映射。这样做也比使用键控键盘要昂贵得多array@Casey:为此类数据建模的更好方法可以使用地图结构。在这个问题中,有两个元素:键及其值。它有很多用途,比如:或。对,但当我评论时,你没有任何代码,你只是说使用数组映射。这样做也比使用键控数组要昂贵得多