0

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';
}
4

3 に答える 3

8

switch声明はあなたの人生を少し簡単にするでしょう。

ただし、ある値から別の値への単純な割り当てであるこのような単純なケースでは、配列を使用することもできます。

$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   
}
于 2012-06-16T12:32:54.147 に答える
1

あなたが試すことができます:

$permission[] = $key == 'insert' ? '1' :
                $key == 'inter-insert' ? '2' :
                $key == 'intra-insert' ? '3' : 
                $key == 'view' ? '4' :
                // you get the idea...
于 2012-06-16T12:33:24.977 に答える
1

C と同じように、switch を使用できます。

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;
}
于 2012-06-16T12:35:24.370 に答える