Ром, чего такие тормоза? Клиент пожалел на хостинге?
Нельзя такое допускать, потом же "Битрикс говно"
Нельзя такое допускать, потом же "Битрикс говно"
/** * Построение числа с падежом в количественных выражениях (1 товар, 5 товаров, 23 товара и т.д.) * * @param int $number * @param string $padej1 * @param string $padej2 * @param string $padej3 * @return string */ function padej ($number, $padej1, $padej2, $padej3, $show_with_number = true) { // 5, "обзор", "обзора", "обзоров" if ( ($number>=5 AND $number<=20) OR ($number > 20 AND substr($number, -1, 1) >= 5 AND substr($number, -1, 1) <= 9) OR substr($number, -1, 1) == 0 OR (strlen($number)>2 AND intval(substr($number, -2, 2))>=5 AND intval(substr($number, -2, 2))<=20) ) { return (($show_with_number)?$number." ":"").$padej3; } elseif (substr($number, -1, 1) == 1) { return (($show_with_number)?$number." ":"").$padej1; } else { return (($show_with_number)?$number." ":"").$padej2; } } |
/** .* Выбирает форму слова в зависимости от числительного .* @param {Integer} num Число .* @param {String} form1 Форма слова для числа 1, например 1 "штука" .* @param {String} form2 Форма слова для числа 2, например 2 "штуки" .* @param {String} form5 Форма слова для числа 5, например 5 "штук" .*/ function GetCounterTemplate(num, form1, form2, form5) { var lastTwoDigits = num % 100; var lastDigit = lastTwoDigits % 10; if ((lastTwoDigits >= 11 && lastTwoDigits <= 14) || (lastDigit >= 5 && lastDigit <= 9) || lastDigit == 0) { return form5; } if (lastDigit == 1) { return form1; } return form2; } |
function declOfNum($number, $titles) { $cases = array (2, 0, 1, 1, 1, 2); return $number." ".$titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ]; } |
/* * Функция для определения склонения существительного с числительным * Пример: * $a = 141; * echo $a.' компани'.numberEnd($a, array('я','и','й')); * */ function numberEnd($number, $titles) { $cases = array (2, 0, 1, 1, 1, 2); return $titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ]; } |
for($i=0; $i < 1001; $i++) echo $i.' '.numberEnd($i, array('год','года','лет')).'<br>'; |
function flexion($count, $s1, $s234, $s567890) { if ($count >= 11 && $count <= 19) { return $s567890; } else { switch ($count % 10) { case 1: return $s1; case 2: case 3: case 4: return $s234; default: return $s567890; } } } |
=flexion(32, "обзор", "обзора", "обзоров") |
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».