[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: красиво выводить результат подсчета
Guest
Вывожу записи, и сверху пишу, что столько то записей, а вот проблема в том что:
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

Да да да. Я ожидал этого)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.