2012-06-16 54 views
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'; 
} 
+0

這屬於[CodeReview](http://codereview.stackexchange.com/) –

+1

呃,切換案例工作的字符串在PHP? – Brendan

+0

是的,它沒有什麼區別。 – Bruce

回答

8

A switch statement會讓你的生活變得更簡單。

在這個簡單的情況下,像這樣然而,它是從一個值到另一個簡單的任務,你也可以使用一個數組:

$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 
} 
1

你可以嘗試:

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

這個作品太謝謝 – Bruce

1

你可以使用開關,就像它在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; 
} 
+0

謝謝,但它也使代碼soooo長... – Bruce

+0

應該複製從php.net的示例2作爲開關必須與字符串 –

+0

@Yifu於將其更改爲'案件「0」:和等等。 –