PHP IF оператор не реагирует так, как мне кажется? - PullRequest
0 голосов
/ 01 октября 2011

У меня небольшие проблемы со следующим оператором 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 или нет.

С другой стороны, когда пользователь зашел на наш сайт. Тогда они смогут увидеть цену2 для продуктов там, где она существует, или они просто увидят цену1.

Теперь проблема со мной, это код:

Пользователь не вошел в систему, он видит price1 независимо от того, имеет ли предмет цену 2 или нет.

Когда пользователь вошел в систему, он видит price2 для предметов с ценой два, но это странная часть, для предметов, у которых нет цены2, он просто отображает 0 , где должен отобразить цену 1.

Кто-нибудь знает, почему упомянутый код производит этот эффект?

Я могу предоставить дополнительный код, относящийся к функции userIsLoggedIn, по запросу.

Спасибо всем, кто хотел бы помочь !!

Ответы [ 2 ]

1 голос
/ 01 октября 2011

Ваш код выглядит хорошо для меня. Вы можете проверить, что переменные содержат ожидаемое вами значение, используя var_dump().

Также ваш код может быть сокращен следующим образом. Однако, если вам нужно проверить много цен, вероятно, не рекомендуется выполнять userIsLoggedIn () в каждой проверке, а вместо этого сохранять результат в переменной.

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

1 голос
/ 01 октября 2011

Код работает должным образом - цена2 для вашего продукта 1 не должна возвращать true при вызове empty(), поскольку его значение равно 0,00. Может быть, вы должны проверить, если значение равно 0 или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...