PHP IF语句没有反应我认为它应该如何反应?

PHP IF语句没有反应我认为它应该如何反应?,php,if-statement,Php,If Statement,下面的php语句有点问题: if (!userIsLoggedIn()) { $prPrice = (empty($prPrice2)) ? $prPrice1 : $prPrice1; } else { $prPrice = (empty($prPrice2)) ? $prPrice1 : $prPrice2; } 以下是两种产品的示例: product 1 -> price1 = 1.00 product 1 -> price2 = 0.00 product 2

下面的php语句有点问题:

if (!userIsLoggedIn()) {
    $prPrice = (empty($prPrice2)) ? $prPrice1 : $prPrice1;
} else {
    $prPrice = (empty($prPrice2)) ? $prPrice1 : $prPrice2;
}
以下是两种产品的示例:

product 1 -> price1 = 1.00
product 1 -> price2 = 0.00
product 2 -> price1 = 1.00
product 2 -> price2 = 0.80
如果用户未登录我们的网站(userIsLoggedIn函数),则无论产品价格2是否存在,用户只能查看产品价格1

另一方面,当用户登录我们的网站时。然后,他们应该能够看到它存在的产品的价格2,或者他们只会看到价格1

现在,me代码的问题是:

如果用户未登录,则无论项目是否设置了price2,他们都会看到price1

当用户登录时,他们会看到价格为2的项目的价格2,但这是奇怪的部分,对于没有价格2的项目,它只显示0,其中应该显示价格1

是否有人对上述代码产生这种效果的原因有任何意见

我可以根据请求提供有关userIsLoggedIn函数的更多代码


感谢所有愿意帮忙的人

代码正常工作-调用
empty()
时,产品1的price2不应返回
true
,因为它的值为0.00。也许你应该检查一个值是否为0

我觉得你的代码很好。您可以通过使用
var\u dump()
验证变量是否包含您期望的值

您的代码也可以这样缩短。但是,如果您必须检查很多价格,可能不建议在每次检查中执行userIsLoggedIn(),而是将结果保存在一个变量中


$prPrice=($prPrice2!=0&&userIsLoggedIn())$prPrice2:$prPrice1

我相信您的第二行可以缩短为
$prPrice=$prPrice1如何设置
$prPrice2
?$prPrice=($prPrice2!=0&&userIsLoggedIn())$prPrice2:$prPrice1。那应该更短。你能把剩下的代码贴出来吗?您还可以验证变量是否具有您在数据库中以及php脚本中所述的值吗?在if之前放置price1和price2的var_dump就足够了,以验证这些值是否是您期望的值,因为如果它们是您发布的代码,则应该可以正常工作。有3000多种产品,所有都具有相应设置的price1字段。当用户未登录到系统时,它会显示,但当用户登录时,它们都显示为0,除非存在不为空的price2,否则它会显示price2。你能想出这背后的其他原因吗?我想你可能对“空”的含义感到困惑。如果列类型为数字格式的数据库中的值为
null
(即空),这并不等同于在PHP中调用
empty()
,返回
true
。我假设这就是为什么产品1的价格2是0.00,而您认为它是空的。数据库中的字段价格2总是0.00或高于0.00的任何值。始终设置字段price1。我对你的意思有点困惑:/好吧,你认为
empty($prPrice2)
在检查什么?试试看,
$prPrice2==0
而不是谢谢你,你就是那个人!在任何情况下,对于处理函数在每次搜索中执行+-50-100次这一事实,您会建议什么更好的解决方案?只需将它放在遍历结果的循环之前。示例:
$userIsLoggedIn=userIsLoggedIn()
然后改用$userIsLoggedIn,因为它应该保持true或false,就像每次执行函数一样。