Сделать правильное окончание слов вида "пользователь", "пользователей" "пол

BeatBox

Guest
Сделать правильное окончание слов вида "пользователь", "пользователей" "пол

Здравствуйте, подскажите пожалуйста как лучше сделать правильные окончания слов после цифрового значения. Например код выводит сколько сейчас пользователей в таком-то разделе (файлов в категории, новостей за такой-то день и т.п)
1 - пользователь
2 - пользователя
3 --\\--
4 --\\--
5 пользователей
6 --\\--
7 --\\--
8, 9, 10 - то же самое.

Как это правильно выводить? По идее просто выбрать последнюю цифру из числа и сделть уже if 1 то "ь" и так далее.
Собственно вопрос - как узнать последнюю цифру из числа?
 

BeatBox

Guest
ну для 11 - 14 мне не лень дополнительные правила написать.
так как же все-таки узнать последнюю цифру в параметре $chislo?

-~{}~ 11.04.05 00:31:

аа, только дошло про "11-14". Ну тогда эти числа будут выглядеть криво :) а вообще - все можно решить по-моему, знать бы только ответ на мой вопрос (выше)
 

t3[0one]

Новичок
$user=array('пользователь','пользователя','--\\--'....);

$user['0'] = пользователь
$user['1'] = пользователя
$user['2'] = --\\--
............

-----------------------------
http://php.net/count

правельно я понял ? +)
 

fixxxer

К.О.
Партнер клуба
>аа, только дошло про "11-14"

Продолжаем.

111 - ?
2014 - ?

:)
 

Мутник

Новичок
fixxxer

так там же массив.. вариант с массивом..
день потратить на его заполнение, а потом все ок! ;)
 

BeatBox

Guest
<?php
$count = 0;
while ($count < 2000) {
echo "Сейчас этот форум просматривают $count пользовател$word_ends_with<br>";
$count++;
if (($count % 10) == 1) { $word_ends_with = "ь"; }
elseif (($count % 10) == 2) { $word_ends_with = "я"; }
elseif (($count % 10) == 3) { $word_ends_with = "я"; }
elseif (($count % 10) == 4) { $word_ends_with = "я"; }
elseif (($count % 10) == 5) { $word_ends_with = "ей"; }
elseif (($count % 10) == 6) { $word_ends_with = "ей"; }
elseif (($count % 10) == 7) { $word_ends_with = "ей"; }
elseif (($count % 10) == 8) { $word_ends_with = "ей"; }
elseif (($count % 10) == 9) { $word_ends_with = "ей"; }
elseif (($count % 10) == 0) { $word_ends_with = "ей"; }

if (($count % 20) == 11) { $word_ends_with = "ей"; }
if (($count % 20) == 12) { $word_ends_with = "ей"; }
if (($count % 20) == 13) { $word_ends_with = "ей"; }
if (($count % 20) == 14) { $word_ends_with = "ей"; }
}

?>
 

Мутник

Новичок
BeatBox

ГЫЫЫ...

если одно число -
PHP:
$num %10
если два числа -
PHP:
$num % 20
парень, бросай это дело! Иди в 5й класс, учить математику, разряды чисел и т.д...!
 

BeatBox

Guest
Мутник
парень, обновляй страницу перед тем как нагрубить.
 

Мутник

Новичок
BeatBox

нет, он до сих пор не понял!!!! ;))))
ты внимательно читай пост!

P.S. очень некрасиво менять свой пост, после чего кричать "Я ПРАВ" ;)
 

BeatBox

Guest
Мутник
да я кстате поменял не из-за того чтобы что-то скрыть. просто там было слишком много лишнего :)
 

Мутник

Новичок
BeatBox

ты так и не понял того, что ты написал полный бред вот в этих строках?

PHP:
if (($count % 20) == 11) { $word_ends_with = "ей"; }
if (($count % 20) == 12) { $word_ends_with = "ей"; }
if (($count % 20) == 13) { $word_ends_with = "ей"; }
if (($count % 20) == 14) { $word_ends_with = "ей"; }
 

fixxxer

К.О.
Партнер клуба
:)

Внимание, правильный ответ:

$users = array('пользователей', 'пользователь', 'пользователя');
$index = $count % 100;
if ($index >=11 && $index <= 14) $index = 0;
else $index = ($index %= 10) < 5 ? ($index > 2 ? 2 : $index): 0;
echo $count, ' ', $users[$index];
 

BeatBox

Guest
Автор оригинала: Мутник
BeatBox

ты так и не понял того, что ты написал полный бред вот в этих строках?
если последние два числа - 11-14 то окончание "ей"
(2014 пользователей)
может я чё недоганяю
 

Мутник

Новичок
BeatBox

ДА! ТО ЧТО оператор "%" выдает остаток от деления на указанное число...

чтобы получить ОДНУ посл. цифру - $num % 10; чтобы получить ДВЕ посл. цифры - это НЕ $num % 20, A $num % 100;

так понятнее???
математика. раздел разряды чисел.

P.S. вариант fixxxer'a тебе поможет!
 
Сверху