Сейчас на сайте 2 гостей и 3 новостей... А ведь такие сочетания встречаются на очень многих сайтах. И если в английском языке достаточно написать что-то типа day(s), byte(s) и это будет смотреться вполне нормально, то в русском языке в конструкциях "число + слово" обязательно придется учитывать склонения. Безумные извраты типа "гостя(ей)" и "новость(ей)" я даже не рассматриваю.
Чтобы писать по-русски на сайтах можно использовать такую универсальную функцию:
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, а потом мысленно подставляйте их в массив: (один "рубль", два "рубля", пять "рублей") или (одна "новость", две "новости", пять "новостей").
После небольшой оптимизации функцию можно записать в одну строчку:
function num2word($n,$words) { return ($words[($n=($n=$n%100)>19?($n%10):$n)==1?0 : (($n>1&&$n<=4)?1:2)]); }
Рубрики
-
3D и графика ( 7 )
-
Веб разработка ( 13 )
-
Железо и периферия ( 8 )
-
Портфолио и резюме ( 3 )
-
Сервер на Debian Linux ( 20 )
-
Сисадмину на заметку ( 14 )
-
Тестовая лаборатория ( 10 )
Новые записи
25.03.23 Ошибка 0x00000709 при попытке установить сетевой USB принтер
05.10.19 Добавление сертификата в exim4
18.08.18 Утилиты диагностики системы Linux
02.10.16 Отключение systemd на Debian
Комментарии
- Всё отлично! Спасибо за гайд!
03.03.24 08:01 комментирует: Luidgi Vampa - Добрый день! Спасибо вам за ваши статьи! Подскажите пожалуйста. Как проверить ус...
17.01.24 01:47 комментирует: Олег - Спасибо, проделал на ноутбуке dv5-1040er, скорость реально выросла. Делал на w10...
10.10.23 15:58 комментирует: Евгений - у мене схожа проблема як була у вас... чому ви вирішили ввести 92500000??? дякую...
11.04.23 01:51 комментирует: Володимир