将三元运算符转换为 if else

convert ternary operator to if else

我有这个三元运算符,我试图通过将其转换为普通运算符来理解它 ifelse

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

我做错了什么?

在做

$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()]++;

三元可以简单地翻译成

if(isset($countDinner[$invitation->getDinner()->getId()]))
{
    $countDinner[$invitation->getDinner()->getId()] = $countDinner[$invitation->getDinner()->getId()] + 1;
}
else
{
    $countDinner[$invitation->getDinner()->getId()] = 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;
}