2017-09-13 110 views
1

其他運營商我的if else運營商聲明如果有一小段路

$row["column"] = ($example == "H") ? "first" : "second"; 

我需要else if條件添加到這一點。需要編寫類似代碼的東西,但要使用?:。尋找更短的代碼方式,這可能嗎?

if($example == "H") 
{ 
    $example = "first"; 
} 
else if($example == "K") 
{ 
    $example = "smth different"; 
} 
else if($example == "X") 
{ 
    $example =" third one"; 
} 
else 
{ 
    $example = "go away"; 
{ 
+3

鏈接三元運算符是一個壞主意。它很快就難以閱讀。關於'switch'呢? – Qirel

+2

Yeah'switch'在這裏是完美的用例 – Thamaraiselvam

+0

*「我有if else聲明」* - 「'?:'」不是一個聲明,它是一個運算符。經營者和陳述是不同的事情,在生活中有不同的目的。他們不能互換。 – axiac

回答

6

鏈三元運營商是不是一個好主意。較短的代碼並不總是意味着它更具可讀性!如果你在另一個內部使用多個三元運算符,它很快就變得不可讀。

而是使用switch來檢查每種情況。

switch ($example) { 
    case "H": 
     $example = "first"; 
     break; 
    case "K": 
     $example = "smth different"; 
     break; 
    case "X": 
     $example =" third one"; 
     break; 
    default: 
     $example = "go away"; 
} 
+1

我看到,如果我有很多其他運營商,它是無用的使用'? :'最好的方法是切換。謝謝!) – Namik

0

你可以嵌套它們:

$row["column"] = ($example == "H") ? "first" : $row["column"] = ($example == "K") ? "smth different" : ...; 

還我會建議使用開關不是這個

+0

這也行不通,因爲你需要將條件分組,因爲你走得更深。 – Qirel

+0

我看到,如果我有很多其他運營商,它是無用的使用'? :'最好的方法是切換。謝謝!) – Namik

5

使用associative array

$map = [ 
    'H' => 'first', 
    'K' => 'smth different', 
    'X' => 'third one', 
]; 

$val = 'go away'; 
if (isset($map[$example])) { 
    $val = $map[$example]; 
} 

echo $val; 

或者使用switch聲明:

switch ($example) { 
    case 'H': 
    $val = 'first'; 
    break; 
    case 'K': 
    $val = 'smth different'; 
    break; 
    case 'X': 
    $val = 'third one'; 
    break; 
    default: 
    $val = 'go away'; 
    break; 
} 

echo $val; 
+0

我看到,如果我有很多其他運營商,它是無用的使用'? :'最好的方法是切換。謝謝!) – Namik

1

可以使用SW癢聲明,而不是一個if/else,例如:

switch ($example) 
{ 
    case 'A': 
     $example = 'first'; 
     break; 
    case 'B': 
     $example = 'second'; 
     break; 
    default: 
     $example = 'default'; 
} 
+0

我看到,如果我有很多其他運營商,它是無用的使用'? :'最好的方法是切換。謝謝!) – Namik

相關問題