Склонение слов на php\javascript
Последние записи
Склонение слов на javascript
Для склонения числовых значений будем использовать небольшую javascript функцию. В качестве аргументов ей передаётся число и массив из форм слова при разных числовых значениях. Результат можно использовать по своему назначению.
function num2str(n, text_forms) {
n = Math.abs(n) % 100; var n1 = n % 10;
if (n > 10 && n < 20) { return text_forms[2]; }
if (n1 > 1 && n1 < 5) { return text_forms[1]; }
if (n1 == 1) { return text_forms[0]; }
return text_forms[2];
}
Применяется функция следующим образом:
$('#p1').html('1 '+num2str(1, ['минута', 'минуты', 'минут']));
$('#p2').html('2 '+num2str(2, ['минута', 'минуты', 'минут']));
$('#p3').html('5 '+num2str(5, ['минута', 'минуты', 'минут']));
Склонение слов на php
/*
* $num число, от которого будет зависеть форма слова
* $form_for_1 первая форма слова, например Товар
* $form_for_2 вторая форма слова - Товара
* $form_for_5 третья форма множественного числа слова - Товаров
*/
function true_wordform($num, $form_for_1, $form_for_2, $form_for_5){
$num = abs($num) % 100; // берем число по модулю и сбрасываем сотни (делим на 100, а остаток присваиваем переменной $num)
$num_x = $num % 10; // сбрасываем десятки и записываем в новую переменную
if ($num > 10 && $num < 20) // если число принадлежит отрезку [11;19]
return $form_for_5;
if ($num_x > 1 && $num_x < 5) // иначе если число оканчивается на 2,3,4
return $form_for_2;
if ($num_x == 1) // иначе если оканчивается на 1
return $form_for_1;
return $form_for_5;
}
Применение функции:
$max_product = 5; // число, эта переменная может задаваться через какую-то другую функцию или доставаться из базы - неважно
echo $max_product . ' ' . true_wordform($max_product, 'товар', 'товара', 'товаров'); // в результате получится "5 товаров"
Использованы материалы:
Комментарии