我遇到了php代碼的簡單問題。PHP - 簡單的IF ... ELSE IF ...產生意想不到的結果,教育我嗎?
我正在使用2個產品定價等級。這些基於用戶是否已登錄,或者不是。
如果用戶沒有登錄,並且所述第一價格是空的;那麼價格就是price1。如果不是,則爲price1。
這工作完全正常。
如果用戶被登錄,並且所述第一價格是空的;那麼價格就是price1。如果不是,那就是price2。
這是它應該工作的方式,但實際發生的情況是這樣的:
如果用戶登錄,並率先降價是空的;那麼價格是。如果不是,那就是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;
}
如果有人有任何建議可以幫助我解決此問題,將不勝感激。
謝謝!
@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
如果用戶已經登錄,但在price2字段爲空,則價格變量將價格1。如果沒有,那麼這將是價格2.
在另一方面,如果用戶沒有登錄,但price2字段爲空,那麼價格變量將被價格1。如果沒有,那麼這將是價格1
這沒有意義:首先你要檢查一個用戶是否登錄,然後判斷用戶是否是*未登錄,然後是否用戶是*未登錄。用戶*已登錄,第一個和第三個塊將始終觸發。你最終想做什麼?'$ proPrice1'和'$ proPrice2'是從哪裏來的?這看起來有點亂,我在這種情況下做的是刪除所有內容並重新開始 –
第一個嵌入式if語句塊看起來會產生相同的效果('empty()'或不)。 –
userIsLoggedIn()也被調用兩次,這可能會產生意想不到的結果,順便說一句。 –