Ноя 292013
 

phpИзменяем окончания в именах существительных во множественном числе. Меня реально стало напрягать делать вывод количество товаров в виде «В корзине товаров: 1», захотелось чего-то более человечного.

В принципе, думаю, суть ясна: 1 яблоко, 2 яблока, 5 яблок и так далее.

функция

function getNumEnding($number,$array,$endingArray)
{
	$lenofnum=strlen($number);
	$rev=strrev($number);

	if (!in_array($number,$array)) {$lenofnum=1;}

	$rev=substr($rev,0,$lenofnum);
	$rev=strrev($rev);
	foreach($array as $key=>$item)
	{
		if ($rev==$item) 
		{
			$ending=$endingArray[$key];
		}
	}

    return $ending;
}

Рассмотрим работу функции:
getNumEnding($number,$array,$wordsArray)
$number — само число, существительное которого нужно привести к нормальному виду
$array — массив с числами, для которых нужно обрабатывать определенные слова из следующего массива
$wordsArray — массив со словами в такой же очередности, как и цифры в предыдущем массиве

пример использования

$nums=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,0);
$words = array('товар','товара','товара','товара','товаров','товаров','товаров','товаров','товаров','товаров','товаров','товаров','товаров','товаров','товаров');
$numofprods = 14;   
   $res = getNumEnding($numofprods,$nums,$words);
		if ($numofprods>0)
		{
		        echo "В вашей корзине ".$numofprods.' '.$res;
		}
		else
		{
		        echo 'В вашей корзине нет товаров';	
		}

получаем «В вашей корзине 14 товаров»

Дорогие читатели! Мною было принято решение закрыть комментарии на блоге. Теперь все обсуждения переносятся на недавно открытый форум, ввиду того, что формат сообщений там намного удобней для обсуждения. Не стесняйтесь задавать любые вопросы по тематике блога! Я всегда на связи.
Перейти на форум
.
 Опубликовано в 12:16 пп

Извините, форма комментирования закрыта в данный момент.