[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Просклонять слово по числам
olgatcpip
Мне часто требуется просклонять слово по числам:
0 слонов, 1 слон, 2 слона
Или слово страницы, очень часто требуется.

На смарти добавила функцию.
А здесь чуть ее преобразовала


/**
* Преобразование слов в зависимоси от числа
* Например: преобразование слова комментарий
* 0 комментариев, 1 комментарий, 2 комментария
*
* По наблюдениям всегда различны лишь 3 окончания ($n0, $n1, $n2).
* Для верного вывода стот только проанализировать число ($num) как сроку, его окончание из 2х символов
* 0 => $n0
* 1 != 11 => $n1
* 1 == 11 => $n0
* 2-4 != 12..14 => $n2
* 2-4 == 12..14 => $n0
* 5 => $n0
*
*
@created 11.08.11
*
*
@author olgatcpip
*
@contact olgatcpip@ya.ru
*/
//$num //число слова
// $root //корень слова
//$n0, $n1, $n2' //окончания

function wordnum($num,$root, $n0, $n1, $n2 )
{
$numend = substr($num,-1);
$word = '';
switch($numend)
{
case '0':
$word = $root.$n0;
break;
case '1':
if(substr($num,-2)!='11')
$word = $root.$n1;
else
$word = $root.$n0;
break;
case '2':
case '3':
case '4':
if(substr($num,-2) == '1'.(int)$numend)
$word = $root.$n0;
else
$word = $root.$n2;
break;
default:
$word = $root.$n0;
}
return $word;
}


Пример вызова
echo wordnum(0,'страниц',"","а","ы");


Если обнаружите ошибку, пожалуйста сообщите.

_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

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