Как форматировать цену
Решение задачи с выводом строки с ценой на сайте.
Условия задачи следующие:
- иногда случаются ошибки в ценообразовании, на сайт попадают нулевые или астрономические цены — такие надо отсечь;
- корректные числа нужно форматировать.
Правила обработки ошибок
Ошибкой считаются следующие случаи:
- переданное значение не является числом;
- передано нулевое значение;
- передано значение меньше 100;
- передано значение больше 10 000 000.
Последние два пункта — частные случаи. Сто процентов не может быть таких маленьких или таких больших цен.
В случае ошибки выводится строка «Цена по запросу».
Правила форматирования корректных чисел
- все числа до 9999 включительно пишутся слитно;
- у чисел больше 9999 каждые три разряда с конца отбиваются тонким неразрывным пробелом;
- в конце ставится знак рубля, отбитый от числа неразрывным пробелом.
Решение
private function formatPrice($price) {
// Проверяем, является ли входное значение числом
if (!is_numeric($price) || $price < 100 || $price > 10000000) {
return "цена по запросу";
}
// Форматируем число
if ($price > 9999) {
$formattedPrice = number_format($price, 0, '', "&#8239;");
} else {
$formattedPrice = $price;
}
// Возвращаем строку с ценой и символом рубля
return $formattedPrice . "&nbsp;₽";
}