СКРИПТЫ
ТЕГИ:
php (319)
js (238)
html (145)
css (125)
html tags (62)
js tag (56)
jquery (41)
text (36)
js method (35)
js date (32)
php array (31)
form html (30)
fonts (27)
link (26)
Показать еще :
online (25)
ruweb.net (24)
foto (22)
php file (21)
atom (20)
forum (19)
hosting (18)
svg (18)
php date (17)
board (16)
html book (16)
input (16)
php time (16)
color (15)
js events (14)
js url (14)
notepad (13)
osclass (13)
htaccess (13)
img (13)
js time (13)
php img (12)
select (12)
знак (12)
table (12)
dw block (12)
info (12)
php path (12)
download (11)
keyboard (11)
jsphp (11)
form (11)
icon (11)
mouse (10)
yandex (10)
js delete (10)
hover (9)
dosite (8)
comment (7)
cookie (7)
php url (7)
year (6)
mysql (6)
iframe (6)
browser (6)
list (6)
click (6)
php get (6)
adminka (5)
tag a (5)
js math (5)
chart (5)
heading (5)
reg.ru (5)
mb (5)
search (5)
ftp (5)
js id (5)
value (5)
base64 (4)
week (4)
day (4)
ssl (4)
bbcode (4)
нок (4)
vk (4)
js form (4)
submit (4)
php var (4)
month (4)
pages (4)
symbols (4)
task (4)
console (4)
куб (3)
captcha (3)
domen (3)
js post (3)
line (3)
ucoz (3)
numbers (3)
padding (3)
js img (3)
https (3)
js hash (3)
vs code (3)
scandir (3)
рся (2)
seo (2)
prompt (2)
counter (2)
height (2)
google (2)
details (2)
js vars (2)
video (2)
sitemap (2)
tag hr (2)
youtube (2)
arrows (2)
typeof (2)
money (2)
qr kod (2)
нод (1)
rutube (1)
jino (1)
cursor (1)
header (1)
speed (1)
windows (1)
archive (1)
smile (1)
scroll (1)

Функция для склонения существительного в зависимости от числа.

2019/09/22 Марат 941 0 php | year |
Склонять существительное в зависимости от числа в php! Как делать склонение существительного через php в зависимости от числа!

php Склонение в зависимости от числа

  1. Как будем склонять!?
  2. Принцип скрипта для склонения существительного в зависимости от числа.
  3. Функция для склонения существительного в зависимости от числа.
  4. Вторая функция для склонения существительного в зависимости от числа.
  5. Скачать можно здесь

  1. Как будем склонять!?

    Разберем пример, с которым я столкнулся и как это склонение работает!?

    Нам нужно, чтобы автоматически слово год, если это например «1 год», преобразовывалось в года, например «2 года» и последнее – лет, это, когда 5 лет.

    Можно конечно, как все говорят умники вручную прописывать там, где это нужно… ну да.. вы можете это делать вручную, но зачем!?

    Как-то мне нужно было разобраться с падежами - поэтому слово склонение в заголовке не стал употреблять!

    И потом, если у вас динамическая дата должна выводиться …, например, мне в этом году 1 год, а в следующем году уже будет 2 года и т.д. Не буду же я каждый год - вспоминать, где же мои года нужно изменить – у меня нет места в голове…чтобы это помнить, да и не хочу…

    Давайте теперь разберемся с русским языком…

    И да… кстати… во времена СССР я еле-еле вытягивал не 3, а теперь, как мне кажется, среди этой вакханалии с русским языком… , что я наблюдаю… то я практически отличник…

    Мы немного отвлеклись…

    У нас будет:

    1 год

    Но:

    2 года

    3 года

    4 года

    И но:

    5 лет

    6 лет и т.д.

    Исключения

    11 лет

    12 лет

    13 лет

    14 лет

    И так до 20 включительно


  2. Принцип работы склонения существительного в зависимости от числа.

    Сразу давайте получим в переменную наши года… и чтобы после строки алгоритма… мы уже могли написать код…

    $var = ‘тут число’;

    Последний элемент строки:

    $first_num_left = substr( $var , -1);

    Два последних элемента строки:

    $second_num_left = substr( $var , -2);

    Из выше выведенного, мы можем вывести некий алгоритм для нашего скрипта.

    Если последний элемент строки – равен 1 и не равен 11, то год

    if($first_num_left =="1" and $second_num_left !="11") { echo $var." год";}

    Если последний элемент строки – равен 2(3,4) и не равен 12(13,14), то года

    elseif($first_num_left =="2" and $second_num_left !="12") { echo $var." года";}

    elseif($first_num_left =="3" and $second_num_left !="13") { echo $var." года";}

    elseif($first_num_left =="4" and $second_num_left !="14") { echo $var." года";}

    Во всех остальных случаях:

    else{ echo $var." лет"; }

    Соберем все вместе:

    $var = 21;

    $first_num_left = substr( $var , -1);

    $second_num_left = substr( $var , -2);

    if($first_num_left =="1" and $second_num_left !="11") { echo $var." год";}

    elseif($first_num_left =="2" and $second_num_left !="12") { echo $var." года";}

    elseif($first_num_left =="3" and $second_num_left !="13") { echo $var." года";}

    elseif($first_num_left =="4" and $second_num_left !="14") { echo $var." года";}

    else{ echo $var." лет"; }

    результат:

    21 год


  3. Функция для склонения существительного в зависимости от числа.

    Следующий шаг, наш скрипт обернуть в функцию -> это будет намного удобнее использовать и вообще!

    Существительные вынесли в отдельные переменные $one, $two, $three

    function getSklo($number)

    {

      $one =' год';

      $two =' года';

      $three =' лет';

      $first = substr( $number , -1);

      $two = substr( $number , -2);

      if($first =='1' and $two !='11') { return $number.$one;}

      elseif($first =='2' and $two !='12') { return $number.$two;}

      elseif($first =='3' and $two !='13') { return $number.$two;}

      elseif($first =='4' and $two !='14') { return $number.$two;}

      else{ return $number. $three; }

    }

    Использование функции для склонения существительного в зависимости от числа.

    Если вам нужно увидеть результат работы функции для склонения существительного в зависимости от числа.

    То берем число(любое), путь это будет 126 и применим к этому числу нашу функцию и выводим с помощь. echo:

    echo getSklo(126);

    Результат:

    126 лет

    И...

    Чтобы было наглядно, давайте протестируем эту функцию в цикле:

    for ($i=1; $i < 25; $i++) {

    echo getSklo($i).'<br>';

    }

    Результат:

    1 год
    22
    33
    44
    5 лет
    6 лет
    7 лет
    8 лет
    9 лет
    10 лет
    11 лет
    12 лет
    13 лет
    14 лет
    15 лет
    16 лет
    17 лет
    18 лет
    19 лет
    20 лет
    21 год
    2222
    2323
    2424


  4. Вторая функция для склонения существительного в зависимости от числа.

    Но что если вам требуется использовать склонение существительного в зависимости от числа и существительное может быть разным, вот есть такая функция, например(я её подсмотрел на каком-то форуме js, модифицировал под php):

    function getNoun($number, $one, $two, $five)

    {

      $n = abs($number);

      $n %= 100;

      if ($n >= 5 && $n <= 20) {

        return $five;

      }

      $n %= 10;

      if ($n === 1) {

        return $one;

      }

      if ($n >= 2 && $n <= 4) {

        return $two;

      }

      return $five;

    }

    echo "4 " . getNoun(4, 'слон', 'слона', 'слонов');

    результат склонения существительного в зависимости от числа.

    4 слона

    Ещё пример склонения существительного в зависимости от числа.

    echo "150" . getNoun(150, 'стол', 'стола', 'столов');

    результат:

    150 столов

Можете не благодарить, лучше помогите!
Название скрипта :Год, года, лет в php в зависимости от числа
Ссылка на скачивание : Все скрипты на одной странице
Теги :
php Склонение в зависимости от числа
склонение года php
Еще никто не прокомментировал! COMMENTS+   BBcode
Подписаться + =

Счетчик в график :

Построение гравиков
Основа для графика : счетчик посещаемости.
На отдельной : странице.
Последние комментарии :
Марат :
18.11.2022 17:21
Как же я вами завидую! Сколько у вас свободного…
подробнее.
>" :
18.11.2022 17:18
Читать тяжело. Я еще фильтрацию тегов потыкаю, если вы не…
подробнее.
Марат :
18.11.2022 17:17
А как восклицательные знаки? С ними всё нормально??? Или нет??? Вы к ним как…
подробнее.
Марат :
18.11.2022 17:15
В мире много разных отклонений... по статистике примерно 10% человек в странах имеют такие.... Была у меня…
подробнее.
qwe"> :
18.11.2022 17:00
Читать тяжело. Я еще фильтрацию тегов потыкаю, если вы не…
подробнее.
Марат :
20.10.2022 10:10
Очень рад за Вас!
подробнее.
ruweb
Страница загружена за : 0.021161 секунд. Подробнее