如果

2012-09-20 20 views
2

我有一個缺兵少將有點麻煩嵌套速記if語句我想不出如果

($product == "vindo") ? $this->getNextVindoInList($id) : $this->getNextGandrupInList($id), 

這工作得很好,但我想在這句話的另一個檢查。像這樣:

if($product == "vindo") { 
    if($number != 14) { 
    $this->getNextVindoInList($id) 
    } 
} else { 
if($number != 22) { 
    $this->getNextGandrupInList($id) 
} 
} 
+2

要小心,太多的使用會導致更難閱讀代碼!它的性能收益也很小,不會更快也可能更慢。 – Brian

+2

請不要。簡碼不是更好的代碼。 – Sulthan

回答

4

兩種方式:

($product == "vindo" && $number != 14 ? $this->getNextVindoInList($id) : ($number != 22 ? $this->getNextGandrupInList($id) : '') 

// Equivalent of: 
if ($product == "vindo" && $number != 14) 
    $this->getNextVindoInList($id); 
else if ($number != 22) 
    $this->getNextGandrupInList($id); 

// OR 

// Equivalent of your example: 
($product == "vindo" ? ($number != 14 ? $this->getNextVindoInList($id) : '') : ($number != 22 ? $this->getNextGandrupInList($id) : '')) 
+0

這個作品完美!謝謝! –

+0

這是舊的。但是有人剛剛提出了這個建議,這讓我來看看它,並且想要拍拍我以前的自己,甚至將其作爲一個好主意。請避免嵌套三元組。它們不必要地難以閱讀。 – Travesty3

1

試試這個!

($product == "vindo") ? ($number != 14 ? $this->getNextVindoInList($id) : null) : (($number != 22) ? $this->getNextGandrupInList($id) : null) 
1

你的if語句可以通過使用此代碼simplefied:

if($product == "vindo" && $number != 14) { 
    $this->getNextVindoInList($id) 
} else if($number != 22) { 
    $this->getNextGandrupInList($id) 
} 

如果現在的心不是很方便,因爲有另外一個if語句太sorthand。

1

我不會提出一個嵌套三元運算符的解決方案。爲什麼?具有顯式if/else結構的代碼傳達意圖。它顯示了究竟發生了什麼。

爲什麼犧牲幾行可讀性?這是一個相當糟糕的交易。