2016-06-08 80 views
0

我有我試圖理解這個三元操作員通過將其轉換爲正常ifelse轉換三元運營商的if else

$countDinner[$invitation->getDinner()->getId()] = isset($countDinner[$invitation->getDinner()->getId()]) ? $countDinner[$invitation->getDinner()->getId()] + 1 : 1; 

,但我沒有得到正確的結果

$countDinner[$invitation->getDinner()->getId()] = ""; 
if (isset($countDinner[$invitation->getDinner()->getId()])) { 
    $countDinner[$invitation->getDinner()->getId()] = $countDinner[$invitation->getDinner()->getId()] + 1; 
}else{ 
    $countDinner[$invitation->getDinner()->getId()] = 1; 
} 

什麼時我在這裏做錯了嗎?

+2

在這樣做'$ countDinner [$ invitation-> getDinner() - > getId()] =「」;',你創建一個條件,這意味着'if(isset($ countDinner [$ invitation-> getDinner() - > getId()])){'將永遠是真實的... 。你確保在測試之前創建它是否存在....擺脫'$ countDinner [$ in vitation-> getDinner() - > getId()] =「」;'線 –

+0

啊,謝謝你的意思 – Saadia

回答

1

在做

$countDinner[$invitation->getDinner()->getId()] = ""; 

你創建,這意味着一個條件

if (isset($countDinner[$invitation->getDinner()->getId()])) { 

將永遠是真實的....你保證,它正在測試它是否存在之前創建的,所以(當然)它會一直存在。

擺脫

$countDinner[$invitation->getDinner()->getId()] = ""; 


您還可以簡化

$countDinner[$invitation->getDinner()->getId()] = $countDinner[$invitation->getDinner()->getId()] + 1; 

$countDinner[$invitation->getDinner()->getId()]++; 
+0

謝謝你的解釋 – Saadia

0

三元可以簡單地轉換爲

if(isset($countDinner[$invitation->getDinner()->getId()])) 
{ 
    $countDinner[$invitation->getDinner()->getId()] = $countDinner[$invitation->getDinner()->getId()] + 1; 
} 
else 
{ 
    $countDinner[$invitation->getDinner()->getId()] = 1; 
} 
0

刪除第一行

$countDinner[$invitation->getDinner()->getId()] = ""; 

正確的方法是

if (isset($countDinner[$invitation->getDinner()->getId()])) { 
    $countDinner[$invitation->getDinner()->getId()] = $countDinner[$invitation->getDinner()->getId()] + 1; 
}else{ 
    $countDinner[$invitation->getDinner()->getId()] = 1; 
}