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