2016-06-08 82 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; 
}