Изменяем окончания в именах существительных во множественном числе. Меня реально стало напрягать делать вывод количество товаров в виде “В корзине товаров: 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 товаров”