PHP - 简单的IF ...如果......产生意想不到的结果,教育我?

Cra*_*der -4 php if-statement

我遇到了一个简单的PHP代码问题.

我正在使用2个产品定价层.这些是基于用户是否已登录.

如果用户未登录,则第一个价格为空; 然后价格是price1.如果没有,那就是price1.

这完全没问题.

如果用户已登录,则第一个价格为空; 然后价格是price1.如果没有,那就是price2.

这是它应该工作的方式,但实际发生的是:

如果用户已登录,则第一个价格为空; 那么价格是0.如果没有,那就是price2.

为什么我的代码产生这种效果?

if (!userIsLoggedIn())
{
    if (empty($prPrice2))
    {
        $prPrice = $prPrice1;
    }
    else
    {
        $prPrice = $prPrice1;
    }
} else if (userIsLoggedIn())
{
    if (empty($prPrice2))
    {
        $prPrice = $prPrice1;
    }
    else
    {
        $prPrice = $prPrice2;
    }
} else 
{
    $prPrice = $prPrice1;
}
Run Code Online (Sandbox Code Playgroud)

如果有人有任何建议可以帮助我解决这个问题,我将不胜感激.

谢谢!

@Pekka,它相当复杂.我只是希望这种情况发生:

product 1 -> price 1 = 1.00
product 1 -> price 2 = 0.00
product 2 -> price 1 = 1.00
product 2 -> price 2 = 0.80
Run Code Online (Sandbox Code Playgroud)

如果用户已登录但price2字段为空,则price变量将为price1.如果没有,那么它将是价格2.

另一方面,如果用户未登录但price2字段为空,则price变量将为price1.如果没有,那么它将是价格1.

web*_*ave 5

你解释规则的方式有点令人困惑.您应该能够修改以下代码以适合:

if (userIsLoggedIn()) {
    $prPrice = !empty($prPrice2) ? $prPrice2 : $prPrice1;
} else {
    $prPrice = !empty($prPrice1) ? $prPrice1 : $prPrice2;
}
Run Code Online (Sandbox Code Playgroud)