0 записей
1 запись
6 записей
314 записей
301 запись
итд
Через if или switch не рационально получится, и это просто не реально для каждого числа сделать, такую хрень. Я пробовал сделать как написал выше, но потом понял, что это ужас..
if($itogo1 >= 5)
{
$tableall .= "<div class='wall'> ".$itogo1." записей</div>";
}
if($itogo1 == 1)
{
$tableall .= "<div class='wall'> ".$itogo1." запись</div>";
}
if($itogo1 < 5 and $itogo1 != 0 and $itogo1 != 1)
{
$tableall .= "<div class='wall'><b> стена</b> ".$itogo1." записи</div>";
}
if($itogo1 == 0)
{
$tableall .= "<div class='wall'> <small>здесь пока что не кто ни чего не писал... пока...</small></div>";
}
Я думаю надо какие-то арифметические операции, но какие?
Спустя 4 часа, 2 минуты, 17 секунд (29.03.2011 - 10:25) T1grOK написал(а):
Писал навскидку, так что могут быть ошибки.
$arr = array('ей', 'ь', 'и', 'и', 'и', 'ей', 'ей', 'ей', 'ей', 'ей');
if ($itogo1 == 0){
$cont = "<small>здесь пока что не кто ни чего не писал... пока...</small>";
}else{
if ($itogo1 > 10 & $itogo1 < 15){
$cont = $itogo1." записей";
}else{
$key = $itogo1{strlen($itogo1)-1};
$cont = $itogo1." запис".$arr[$key];
}
}
$tableall .= "<div class='wall'>{$cont}</div>";
Спустя 20 минут, 8 секунд (29.03.2011 - 10:45) Snus написал(а):
<?php
$arr = array(
'0' => 'ей',
'1' => 'ь',
'2' => 'и',
'3' => 'и',
'4' => 'и',
'5' => 'ей',
'6' => 'ей',
'7' => 'ей',
'8' => 'ей',
'9' => 'ей'
);
$cnt = 364558;
$i = substr($cnt, -1);
echo $cnt.' запис'.$arr[$i];
?>
Спустя 12 минут, 12 секунд (29.03.2011 - 10:57) T1grOK написал(а):
Snus А теперь посмотри, что выведется для $cnt = 11. (11 запись)
Спустя 19 минут, 29 секунд (29.03.2011 - 11:17) alex12060 написал(а):
function skl($number){
static $votes=array(' записей', ' запись', ' записи');
$numberLast=intval(substr(strval($number),-1,1));
$numberPreLast=intval(substr(strval($number),-2,2));
if(($numberLast==0) or ((5<=$numberLast) and ($numberLast<=9)) or((11<=$numberPreLast) and ($numberPreLast<=19))){
$type=0;
}elseif(($numberLast==1) and ($numberPreLast!=11)){
$type=1;
}elseif((2<=$numberLast) and ($numberLast<=4)){
$type=2;
}
return $number.$votes[$type];
}
Спустя 2 минуты, 21 секунда (29.03.2011 - 11:19) alex12060 написал(а):
T1grOK
:)
$cont = "<small>здесь пока что никто ничего не писал... пока...</small>";
:)
Спустя 29 минут, 43 секунды (29.03.2011 - 11:49) sharki написал(а):
Вот функция neadekvat'a
Думаю лучше будет
Думаю лучше будет
function plural_form($n, $form1, $form2, $form5)
{
$n = abs($n) % 100;
$n1 = $n % 10;
if ($n > 10 && $n < 20) return $form5;
if ($n1 > 1 && $n1 < 5) return $form2;
if ($n1 == 1) return $form1;
return $form5;
}
echo plural_form(1, 'Комментарий', 'Комментария', 'Комментариев'); // Комментарий
echo plural_form(23, 'Комментарий', 'Комментария', 'Комментариев'); // Комментария
echo plural_form(26, 'Комментарий', 'Комментария', 'Комментариев'); // Комментариев
Спустя 17 минут, 41 секунда (29.03.2011 - 12:06) alex12060 написал(а):
echo plural_form(26, 'Комментарий', 'Комментария', 'Комментариев'); // Комментариев
Грамоздкая запись.
Спустя 2 минуты, 41 секунда (29.03.2011 - 12:09) sharki написал(а):
Да тут немного подпелить как хочет ТС и будет вполне адекватная функция =)
Спустя 50 минут, 48 секунд (29.03.2011 - 13:00) neadekvat написал(а):
Цитата (alex12060 @ 29.03.2011 - 12:06) |
Грамоздкая запись. |
Да что ты? Разница приведенного sharki кода и твоего в том, что в твоем слова зашиты в функцию. Плюс, согласись, приведенная sharki функция куда более читабельна.
Русский язык - это не тот язык, где можно легко переложить нахождение склонений на машину.
Спустя 21 час, 53 минуты, 27 секунд (30.03.2011 - 10:53) alex12060 написал(а):
neadekvat
Да да да. Я ожидал этого)
Да да да. Я ожидал этого)