/*
 * @quantity int число для которого выводим склонение
 * @arForms  array  массив форм слова формата (единственное число, двойственное, множественное), например array('этаж','этажей','этажа') или ('а','','ы') для слова "Квартир".nc_numeral_inclination(20, array('этаж','этажей','этажа') )
 */

function nc_numeral_inclination($quantity, $arForms) {

    $string = strval($quantity);
    $len = strlen($string);

    if ($len > 1) {
        $prev_last_digit = $string[$len - 2];
    } else {
        $prev_last_digit = 0;
    }
    $last_digit = $string[$len - 1];
    if ($last_digit == 1 && $prev_last_digit != 1) {
        return $arForms[0];
    }

    if ($last_digit == 0 || ($prev_last_digit == 1 && $last_digit == 1) || (($prev_last_digit == 1)) || ($last_digit >= 5 && $last_digit <= 9)) {
        return $arForms[1];
    }

    if (($last_digit >= 2 && $last_digit <= 4) && !($quantity >= 11 && $quantity < 20)) {
        return $arForms[2];
    }
}