Обучение/Помощь новичкам | Год/года/лет
Тема закрыта by
Playpix
Делаю определение слова в зависимости от даты
Допустим в базе возраст 25, тогда выводится слово "лет", а если 3, то "года"
Вот есть функция:
вот так вывожу:
Проблема: с возрастом, например, 28 пишет "лет", а с 28 - "года".
Как исправить?
Допустим в базе возраст 25, тогда выводится слово "лет", а если 3, то "года"
Вот есть функция:
<?php
function Year($year) {
$year = abs($year);
$t1 = $year % 10;
$t2 = $year % 100;
return ($t1 == 1 && $t2 != 11 ? "год" : ($t1 >= 2 && $t1 <= 4 && ($t2 < 10 || $t2 >= 20) ? "года" : "лет"));
}
php?> вот так вывожу:
<?php
$age = ''.$users['d_r'].'.'.$users['m_r'].'.'.$users['de_r'].'';
'.Year($age).'
php?> Проблема: с возрастом, например, 28 пишет "лет", а с 28 - "года".
Как исправить?
DELETED
4 апреля 2018, в 17:59
Delete
Чтобы писать по-русски можно использовать следующую универсальную функцию:
function num2word($num,$words) {
$num=$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]); }
}
}
Параметры вызова: $num - число, $words - массив склонений нужного слова. Как формируется массив вы можете посмотреть на примерах.
// Гостей
$num1=2;
$words1=Array("гость", "гостя", "гостей");
// Новостей
$num2=3;
$words2=Array("новость", "новости", "новостей");
// Написать по-русски
echo "Сейчас на сайте ";
echo $num1." ".num2word($num1,$words1); // сколько гостей
echo " и ";
echo $num2." ".num2word($num2,$words2); // сколько новостей
Результат работы скрипта:
Сейчас на сайте 2 гостя и 3 новости
Чтобы было удобнее формировать массивы со склонениями, запомните ряд чисел 1-2-5, а потом мысленно подставляйте их в массив: (один "рубль", два "рубля", пять "рублей") или (одна "новость", две "новости", пять "новостей").
nefakt , Спасибо))
DELETED
4 апреля 2018, в 18:39
Delete
Без проблем