Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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 如果陈述是捷径还是改进?_Php - Fatal编程技术网

Php 如果陈述是捷径还是改进?

Php 如果陈述是捷径还是改进?,php,Php,有没有办法改进下面的if语句块?我只是想知道是否有人能让这段代码更简单、更干净 if($key == 'insert'){ $permission[] = '1'; }else if($key == 'inter-insert'){ $permission[] = '2'; }else if($key == 'intra-insert'){ $permission[] = '3'; }else if($key == 'view'){ $permission[] =

有没有办法改进下面的
if
语句块?我只是想知道是否有人能让这段代码更简单、更干净

if($key == 'insert'){
    $permission[] = '1';
}else if($key == 'inter-insert'){
    $permission[] = '2';
}else if($key == 'intra-insert'){
    $permission[] = '3';
}else if($key == 'view'){
    $permission[] = '4';
}else if($key == 'inter-view'){
    $permission[] = '5';
}else if($key == 'intra-view'){
    $permission[] = '6';
}else if($key == 'update'){
    $permission[] = '7';
}else if($key == 'inter-update'){
    $permission[] = '8';
}else if($key == 'intra-update'){
    $permission[] = '9';
}else if($key == 'delete'){
    $permission[] = '10';
}else if($key == 'inter-delete'){
    $permission[] = '11';
}else if($key == 'intra-delete'){
    $permission[] = '12';
}
A会让你的生活简单一点

但是,在这种简单的情况下,如果是从一个值到另一个值的简单赋值,也可以使用数组:

$permissions = array(
 "insert" =>       "1", 
 "intra-insert" => "2",
 "inter-insert" => "3",
 // etc.
);

isset($permissions[$key]) && $permission[] = $permissions[$key];
或其他变体:

$keyExists = array_key_exists($key, $permissions);
if ($keyExists) {
    $permission[] = $permissions[$key];
} else {
    echo "Key not found!"; // or whatever   
}
您可以尝试:

$permission[] = $key == 'insert' ? '1' :
                $key == 'inter-insert' ? '2' :
                $key == 'intra-insert' ? '3' : 
                $key == 'view' ? '4' :
                // you get the idea...

您可以使用switch,就像在C中一样:

switch ($i) {
case 0:
    echo "i equals 0";
    break;
case 1:
    echo "i equals 1";
    break;
case 2:
    echo "i equals 2";
    break;
default: break;
}

这属于呃,切换案例在php中对字符串有效吗?关闭投票者:脱离主题?认真地迁移的第二条规则是:如果它也在初始站点的主题上,就不要迁移。@bluebill好吧,我想你已经得到了你需要的所有答案。它不是主题外的,但通常是重复的;)撇开玩笑不谈,至少我记得一个非常相似的问题。也许最好给他们留个链接。不过,它已经关闭了。谢谢,但它也让代码变得太长了…应该从php.net复制示例2,因为开关必须与strings@Yifu您将其更改为案例“0”:等等。@Lawrence Cherone抱歉。。。这是php.net中代码的一部分。。。是的,我们应该使用“0”而不是0