Склонение слова рубль в php

191
09 октября 2018, 22:00

1 - рубль 2 - рубля 3 - рубля 4 - рубля 5 - рублей 6 - рублей 7 - рублей 8 - рублей 9 - рублей 10 - рублей 11 - рублей 12 - рублей 13 - рублей 14 - рублей 15 - рублей 16 - рублей 17 - рублей 18 - рублей 19 - рублей 20 - рублей 21 - рубль 22 - рубля 23 - рубля 24 - рубля 25 - рублей

Мне нужно сделать баланс на сайте и чтобы слово рубль склонялось автоматически в зависимости от числа. Я посмотрел до 10 числа и понял что если 2,3 и 4 окончание у числа то пишется рубля. Но когда дошел 12 понял что это не так. Помогите написать функцию...

Answer 1
function num2word($num, $words)
{
    $num = abs($num) % 100; // для правильного отображения отрицательного значения
    if ($num > 19) {
        $num = $num % 10;
    }
    switch ($num) {
        case 1: {
            return($words[0]);
        }
        case 2: case 3: case 4: {
            return($words[1]);
        }
        default: {
            return($words[2]);
        }
    }
}
echo num2word(23, ['рубль', 'рубля', 'рублей']);
Answer 2
function num2word($num = 0, $words = array())
{
    $num     = (int) $num;
    $cases   = array(2, 0, 1, 1, 1, 2);
    return $num . ' ' . $words[($num % 100 > 4 && $num % 100 < 20) ? 2 : $cases[min($num % 10, 5)]];
}
echo num2word(23, ['рубль', 'рубля', 'рублей']);
Answer 3
/**
 * * Склонения
 * @param {Number} $count количество
 * @param {Array} $textForms варианты склонений [для одного, для двух-четырёх, больше четырёх]
 * @return string
 */
function decl($count, $textForms) {
    $count =abs($count) % 100;
    if ($count > 10 && $count < 20) {
        return $textForms[2];
    }
    $count = $count % 10;
    if ($count > 1 && $count < 5) {
        return $textForms[1];
    }
    if ($count === 1) {
        return $textForms[0];
    }
    return $textForms[2];
}
echo decl(2, ['рубль', 'рубля', 'рублей']);
echo decl(-12, ['рубль', 'рубля', 'рублей']);
echo decl(22, ['рубль', 'рубля', 'рублей']);
echo decl(32, ['рубль', 'рубля', 'рублей']);
READ ALSO
Ошибка Severity: Warning в Codeigniter

Ошибка Severity: Warning в Codeigniter

Подскажите в какое место копать, почему не отрабатывает filemtime ?

174
изменить текст названия кнопки Yii2

изменить текст названия кнопки Yii2

Сайт содержит одинаковую кнопку на всех страницах с описанием работодателей - пример: http://inspektorpracieu/o-firme/416_maktronik - синяя кнопка с текстом "Хочу...

206