Сокращение «К» в отметке просмотров

Andre Kowalsy
127 раз
5 мин чтения
Опубликовано: 12-07-2025
Обновлено: 07-02-2026
Категории: Разработка

В современном цифровом мире, где объем информации растет с угрожающей скоростью, важно представлять данные в удобном и доступном формате. Одним из наиболее распространенных решений для отображения больших чисел является сокращение с использованием буквы «К», что является аббревиатурой от слова «кило», означающего тысячу. Это упрощает восприятие информации пользователями, особенно в контексте отметок просмотров, лайков и подписчиков.

Пример использования

Допустим, у вас есть пост, который имеет 1200 просмотров. Вместо того чтобы отображать это число как «1200», вы можете использовать сокращение и представить его как «1.2К». Это не только экономит пространство на экране, но и делает данные более читабельными и привлекательными для пользователя.

Как это работает в коде

Создаем наше решение для реализации функции сокращения чисел, например, abbreviateNumber, идеально подходит для этой задачи. Оно не только обрабатывает различные значения, но и сохраняет необходимую точность с помощью параметра decimals. Вот несколько ключевых моментов вашей функции:

  1. Универсальность: Функция может быть адаптирована для работы с разными суффиксами (такими как «M» для миллионов или «B» для миллиардов), что делает ее гибкой для различных сценариев.

  2. Легкость понимания: Сокращение числа до формата «1.2К» позволяет пользователям легче воспринимать информацию. Это особенно важно для интерфейсов, где каждый пиксель на счету и необходимо эффективно использовать пространство.

  3. Корректное форматирование: Функция учитывает количество десятичных знаков и может стирать незначащие нули, что еще больше улучшает визуальное представление.

Пишем две функции: abbreviateNumber и pluralizeTimes

function abbreviateNumber($value, int $decimals = 1, array $suffixes = ['K', 'M', 'B', 'T']): string
{
    if ($value < 1000) {
        return (string)$value; // ничего не сокращаем
    }
 
    // получаем порядок, кратный 1000
    $order = (int)floor(log($value, 1000));
    $order = min($order, count($suffixes)); // на случай ОЧЕНЬ больших чисел
 
    $scaled = $value / (1000 ** $order);
    $formatted = number_format($scaled, $decimals, '.', '');
 
    // убираем лишнее
    $formatted = rtrim(rtrim($formatted, '0'), '.');
 
    return $formatted . $suffixes[$order - 1];
}
 
function pluralizeTimes(int $n): string
{
    $n = abs($n) % 100;
    $n1 = $n % 10;
 
    if ($n > 10 && $n < 20) {
        return 'раз';
    }
    if ($n1 > 1 && $n1 < 5) {
        return 'раза';
    }
    if ($n1 == 1) {
        return 'раз';
    }
    return 'раз';
}
 
$views = 12650;
echo abbreviateNumber($views) . ' ' . pluralizeTimes($views); // 12.7K раз

Функция abbreviateNumber

function abbreviateNumber($value, int $decimals = 1, array $suffixes = ['K', 'M', 'B', 'T']): string

Определение функции: Функция принимает три параметра:

  • $value: Числовое значение, которое нужно сократить.
  • int $decimals: Количество знаков после запятой (по умолчанию 1).
  • array $suffixes: Массив суффиксов для обозначения сокращённых значений, по умолчанию — ['K', 'M', 'B', 'T'].
if ($value < 1000) return (string)$value; // Ничего не сокращаем

Проверка на значение: Если $value меньше 1000, функция просто возвращает его в виде строки, без сокращений.

$order = (int)floor(log($value, 1000));

Определение порядка: log($value, 1000) вычисляет порядок числа в системе счисления с основанием 1000. floor округляет это значение вниз до ближайшего целого числа.

$order = min($order, count($suffixes)); // На случай ОЧЕНЬ больших чисел

Корректировка порядка: Учитывается количество доступных суффиксов, чтобы избежать выхода за пределы массива для очень больших чисел.

$scaled = $value / (1000 ** $order);

Масштабирование: Делим число на 1000 в степени порядка, чтобы получить новое значение, которое будет записано с суффиксом.

$formatted = number_format($scaled, $decimals, '.', '');

Форматирование: number_format используется для форматирования числа с заданным количеством десятичных знаков.

$formatted = rtrim(rtrim($formatted, '0'), '.');

Удаление лишних нулей: Убирает незначащие нули после запятой и лишнюю точку, если она остается.

return $formatted . $suffixes[$order - 1];

Возврат результата: Функция возвращает форматированное значение с соответствующим суффиксом.


Функция pluralizeTimes

function pluralizeTimes(int $n): string

Определение функции: Эта функция принимает целое число $n и возвращает строку с правильным склонением слова "раз".

$n = abs($n) % 100; 
$n1 = $n % 10;

Нормализация числа: Сначала берем абсолютное значение $n, затем находим его остаток от деления на 100 и на 10. Это делается для правильной обработки склонений.

if ($n > 10 && $n < 20) {
    return 'раз';
}

Правило для десятков: Если число находится в диапазоне от 11 до 19, форма слова должна быть "раз".

if ($n1 > 1 && $n1 < 5) {
    return 'раза';
}

Правило для окончаний 2-4: Если последнее значение (единицы) от 2 до 4, используется форма "раза".

if ($n1 == 1) {
    return 'раз';
}

Правило для окончания 1: Если число заканчивается на 1, то используется форма "раз".

return 'раз';

Заключение

Использование сокращения «К» для представления тысяч просмотров — это не только вопрос эстетики, но и функциональности. Ваш код предоставляет отличное решение для автоматизации этого процесса, делая его доступным и понятным для всех пользователей. Это решение можно легко интегрировать в различные веб-приложения, что повысит удобство общения пользователей с цифровым контентом. С применением такой практики можно значительно улучшить пользовательский опыт, уменьшив визуальную нагрузку и повысив эффективность восприятия информации.

Решение предоставляет удобные возможности для компактного отображения чисел в ясном формате, а также гарантирует правильное использование слов «раз» или «раза» в зависимости от контекста. Эти функции окажутся особенно полезными в различных приложениях, где важно корректное отображение больших чисел и соблюдение языковых норм.