- Регистрация
- 26.05.15
- Сообщения
- 547
- Реакции
- 478
- Баллы
- 63
Гораздо приятнее читать текст, в котором все слова написаны согласно правилам грамматики, а не "2 человек", "3 час" и.т.д.
Я не говорю уже про извращения, типа "гостя(ей)" и "новость(ей)"
Для того, чтобы текст стал приятнее для чтения можно применить функцию склонения слов.
Я выкладываю рабочую функцию из profile_content.php своего чата:
Параметры вызова: $num - число, $words - массив склонений нужного слова.
Массивов $words - можно писать сколько угодно. Ровно столько, сколько слов вам нужно склонять.
Чтобы было удобнее формировать массивы со склонениями, запомните ряд чисел 1-2-5, а потом мысленно подставляйте их в массив: (один "рубль", два "рубля", пять "рублей") или (одна "новость", две "новости", пять "новостей").
В сокращённой записи, сама функция будет иметь вид:
Применяется функция таким образом:
Несколько примеров из profile_content.php:
Ну и так далее...
См. также Склонения слов на javascript
Я не говорю уже про извращения, типа "гостя(ей)" и "новость(ей)"
Для того, чтобы текст стал приятнее для чтения можно применить функцию склонения слов.
Я выкладываю рабочую функцию из profile_content.php своего чата:
PHP:
<?php
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]); }
}
}
$words_1 = array("год", "года", "лет");
$words_2 = array("день", "дня", "дней");
$words_3 = array("час", "часа", "часов");
$words_4 = array("раз", "раза", "раз");
$words_5 = array("человека", "человек", "человек");
$words_6 = array("поинт", "поинта", "поинтов");
$words_7 = array("секунда", "секунды", "секунд");
?>
Массивов $words - можно писать сколько угодно. Ровно столько, сколько слов вам нужно склонять.
Чтобы было удобнее формировать массивы со склонениями, запомните ряд чисел 1-2-5, а потом мысленно подставляйте их в массив: (один "рубль", два "рубля", пять "рублей") или (одна "новость", две "новости", пять "новостей").
В сокращённой записи, сама функция будет иметь вид:
PHP:
function num2word($num,$words) {
return ($words[($num=($num=$num%100)>19?($num%10):$num)==1?0 : (($num>1&&$num<=4)?1:2)]);
}
PHP:
echo $num_n." ".num2word($num_n,$words_n);
Несколько примеров из profile_content.php:
PHP:
<tr>
<td align="right">С нами уже:</td>
<td><font color="#bf0d0d"><b> <?php echo "".$t_days." ".num2word($t_days,$words_2)." и ".$t_hours.":".$t_minutes.":".$t_seconds." ".num2word($t_hours,$words_3).""?></b></font></td>
</tr>
<tr>
<td align="right">Был в BANе:</td>
<td><font color="#bf0d0d"> <b><?php echo $current_user->kol_ban." ".num2word($current_user->kol_ban,$words_4); ?></b></font></td>
</tr>
<tr>
<td align="right"><?php echo $w_quiz_fastest_answer; ?> :</td>
<td><font color="#bf0d0d"> <b><?php echo $row['fastest']." ".num2word($row['fastest'],$words_7); ?></b></font></td>
</tr>
Ну и так далее...
См. также Склонения слов на javascript
Последнее редактирование: