PHP новичок здесь. Я создал функцию, которая увеличивает цены в зависимости от их ценового диапазона:
function update_price ( $price) {
If (isset($price) ) {
if ($price < 60 ) {
return $price + 40;
}
elseif ($price >= 60 && $price < 100) {
return $price + 60;
}
elseif ($price >= 100 && $price < 200) {
return $price + 70;
}
elseif ($price >= 200 && $price < 300) {
return $price + 80;
}
elseif ($price >= 300 && $price < 450) {
return $price + 90;
}
elseif ($price >= 450) {
return $price + ($price * .2);
}
}
}
Функция вызывается, когда я импортирую файл CSV. Прекрасно работает, за исключением последней части функции. Я пытаюсь поднять цену этих соответствующих продуктов на 20%, поэтому я беру цену в долларах и добавляю (цена в долларах * .2). Но продукт, который стоил 628,74 долл., Выходит за 754 888 долл. Вместо 754,88 долл.
Что я сделал не так?
Это нормально, что PHP возвращает 754.488, это то же значение, которое возвращает калькулятор:
628,74 ÷ 5 + 628,74 = 754,488
Здесь вам нужно округлить точность до 2 десятичных чисел, это можно сделать с помощью функции round ().
Также я написал бы вашу функцию так:
function update_price($price) {
if((!$price) || (!is_numeric($price)) || ($price <= 0)) // initial price is not valid
return -1;
if($price >= 450) return $price+round($price/5, 2, PHP_ROUND_HALF_DOWN);
if($price >= 300) return $price+90;
if($price >= 200) return $price+80;
if($price >= 100) return $price+70;
if($price >= 60) return $price+60;
return $price+40;
}
Я не уверен, что вы делаете, чтобы дать вам эту ошибку, но
Testcode
$base = 628.74;
$change = round($base * 0.2,2);
$new = $base + $change;
$allatonce = round(($base+($base*0.2)),2);
print_r(array($base,$change,$new,$allatonce));
Выход
Массив ([0] => 628,74 [1] => 125,75 [2] => 754,49 [3] => 754,49)
все сразу значение будет соответствовать вашим потребностям.