Часто
вижу русские сайты с текстом в виде: "1 вещи" или "47 вещи".
Разработчик и не думает о правильным окончанием существительного. Но
ведь такой текст на сайте более похож на говнотекст=). Покажу вам
решение этой проблемы. Вот пример кода:
function number_ending($number, $ending0, $ending1, $ending2) { $num100 = $number % 100; $num10 = $number % 10; if ($num100 >= 5 && $num100 <= 20) { return $ending0; } else if ($num10 == 0) { return $ending0; } else if ($num10 == 1) { return $ending1; } else if ($num10 >= 2 && $num10 <= 4) { return $ending2; } else if ($num10 >= 5 && $num10 <= 9) { return $ending0; } else { return $ending2; } }
Пример использования:
$n = 10; echo $n." ".number_ending($n, "продуктов", "продукт", "продукта"); // Вернет "10 продуктов"
$n = 21; echo $n." ".number_ending($n, "продуктов", "продукт", "продукта"); // Вернет "21 продукт"
$n = 32; echo $n." ".number_ending($n, "продуктов", "продукт", "продукта"); // Вернет "32 продукта"
|