我在使用以下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函数)那么他们应该只能看到产品价格1,无论产品价格是否存在。
另一方面,当用户登录我们的网站时。那么他们应该能够看到它存在的产品的价格2,或者他们只会看到价格。
现在我的代码问题是:
用户未登录,无论商品是否设置了price2,他们都会看到price1。
当用户登录时,他们会看到价格为2的商品的价格2,但这是奇怪的部分,对于没有价格2的商品,它只显示 0 ,其中它应该显示price1。
有没有人对所提到的代码产生这种效果的原因有任何意见?
我可以根据要求提供与userIsLoggedIn函数相关的更多代码。
感谢任何想要帮助的人!!
答案 0 :(得分:1)
代码正常运行 - 产品1的price2在调用true
时不应返回empty()
,因为它的值为0.00。也许你应该检查一个值是否为0?
答案 1 :(得分:1)
您的代码对我来说很好。您可以使用var_dump()
验证变量是否包含您期望的值。
此外,您的代码可能会缩短。但是,如果你必须检查很多价格,可能不建议在每次检查中执行userIsLoggedIn(),而是将结果保存在变量中。
$prPrice = ($prPrice2 != 0 && userIsLoggedIn()) ? $prPrice2 : $prPrice1;