Количество чатеров

1. Nu3oN (05.11.2009 / 14:37)
Вот решил сделать у себя в чате типа если на сайте 1 человек, то выводило:
на сайте 1 чатер
А если на сайте 2 человека то выводило
на сайте 2 чатера
-----------------
Но как подумал сколько это надо сидеть над этим ужаснулся D т.к это надо перебирать как минимум 100 случаев!
-----------------------
Может у кого неть есть уже готовый скрипт?
-----------------------

2. ктулху (05.11.2009 / 14:47)
Зачем перебирать? Есть же законеомерность... щас выложу функцию

3. ктулху (05.11.2009 / 14:49)
<?php
function russian_text($koll, $texts){
$str1 = substr($koll, -1);
$str2 = substr($koll, -2, -1);
if($str2 != 1 and $str1 == 1)
return $texts[0];
elseif($str2 != 1 and ($str1 == 2 or $str1 == 3 or $str1 == 4))
return $texts[1];
else return $texts[2];
}
//$total - количество комментариев, например
echo $total .' '. russian_text($total, array('комментарий', 'комментария', 'комментариев'));
?> 


4. TarZan (05.11.2009 / 14:50)
считай сколько цифер в числе и вырезай последнее.
тоесть если число 2 то 2 если 43 то 3
и по вырезанному ставь...

5. ктулху (05.11.2009 / 14:51)
В твоём случае
<?
echo $total .' '. russian_text($total, array('чатер', 'чатера', 'чатеров')); 
?>
т.е. один, два, много

6. Nu3oN (05.11.2009 / 15:06)
4. хм! а я даже о этом и не подумал!
сразу if else мучать D
Лови аптечку!

7. Валерий (05.11.2009 / 15:46)
4 не катит. У тебя получается
11 чатер
12-15 чатера

8. TarZan (05.11.2009 / 15:49)
Ну там до 20ти надо условия поставить...а дальше все норм...

9. Lugaro (05.11.2009 / 16:26)
http://www.manhunter.ru/webmaster/15_seychas_na_sayte_2_gostey_i_3_novostey.html smile

10. ктулху (05.11.2009 / 16:34)
9, Вроде хороший вариант)) Сохранил линк, а тебе +1

11. Nu3oN (05.11.2009 / 16:40)
9. не плохо! лови аптеку

12. Александр (05.11.2009 / 16:53)
Вот может еще пригодится
function theend($string,$a,$b,$c)
{
$string=intval($string);
$p = substr($string, -2);
$end = $a;
if($p==2 || $p==3 || $p==4 || $p==22 || $p==23 || $p==24 || $p==32 || $p==33 || $p==34 || $p==42 || $p==43 || $p==44 || $p==52 || $p==53 || $p==54 || $p==62 || $p==63 || $p==64 || $p==72 || $p==73 || $p==74 || $p==82 || $p==83 || $p==84 || $p==92 || $p==93 || $p==94)
{
$end = $b;
}
if($p==1 || $p==21 || $p==31 || $p==41 || $p==51 || $p==61 || $p==71 || $p==81 || $p==91)
{
$end = $c;
}
return $string.' '.$end;
}
echo theend($total,'чатеров','чатаер','чатер');

13. Studentsov (05.11.2009 / 16:55)
Shift свинтус, хоть бы меня вспомнил, функция-то моя smile smile

14. Артём (06.11.2009 / 13:34)
так тоже работает
function word_form ($vars, $value=10){
	$words=explode(':', $vars);
	$s = $words[0];
	if ( ( $value%10==2 or $value%10==3 or $value%10==4 ) && (int)($value/10)!=1) $s = $words[1];
	if ($value%10==1 && (int)($value/10)!=1) $s = $words[2];
				
	return $s;
}
?>


URL: https://visavi.net/topics/2459