Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Условия на php (???)


Gann

Recommended Posts

Цитата

 

Сравнение строк

При сравнении строк в PHP настоятельно рекомендуется использовать только тождественные операторы. Не допускайте возможные автоматические преобразования типов. Не исключены ситуации, которые вы не сможете предусмотреть, и такое поведение станет трудноуловимой ошибкой в вашем коде.

 

//Ошибка при не тождественном сравнении
var_dump('15Блинчиков' == 15); //Результат: bool(true)

Вы сравниваете строки, но для выполнения операции сравнения пхп налету преобразовывает их в числа.

Ну, я так понял.

По феншую надо всё таки сначала явным образом преобразовать строку в число, потом сравнивать.

Змінено користувачем florapraktik
Надіслати
Поділитися на інших сайтах


16 минут назад, florapraktik сказал:

//Ошибка при не тождественном сравнении
var_dump('15Блинчиков' == 15); //Результат: bool(true)

Вы сравниваете строки, но для выполнения операции сравнения пхп налету преобразовывает их в числа.

Ну, я так понял.

По феншую надо всё таки сначала явным образом преобразовать строку в число, потом сравнивать.

По феншую - не надо такие костыли делать)))

 

После всех преобразований, в итоге остановился на таком варианте:

1. Базовая цена = цене в бонусных баллах

<input type="text" name="points" value="<?php $bonprice=$price; $bonprice=(float)$bonprice; echo $bonprice; ?>" placeholder="<?php echo $entry_points; ?>" id="input-points" class="form-control" />

2. Остальное так

<input type="text" name="product_reward[<?php echo $customer_group['customer_group_id']; ?>][points]" value="
<?php
if (isset($price)) {
$a = $price/100;
$a = (float)$a;
} 
if (isset($product_discount['price'])) {
$b = ($product_discount['price'])/100;
$b = (float)$b;
}
if (isset($product_special['price'])) {
$c = ($product_special['price'])/100;
$c = (float)$c;
}
if (isset($b, $c) && $b > $c) {
	echo $c;
} elseif (isset($b, $c) && $b < $c) {
	echo $b;
} elseif (isset($b)) {
	echo $b;
} elseif (isset($c)) {
	echo $c;
} elseif (isset($a)) {
	echo $a;
}
?>" class="form-control" />

Костыль с некоторым феншуем. Работает отлично. Ставит минимальную цену в бонусные баллы за покупку (1% от неё)

 

 

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.