bakor.info

Home News

Склонение множественного числа слова на PHP

01.09.2018

видео Склонение множественного числа слова на PHP

Учите итальянский слова | Урок Прилагательных | Количественные Прилагательные

Передо мной встала такая задача, когда я занимался интернет-магазином Blue Jay и мне требовалось вывести общее количество товаров в категориях. Мне очень хотелось решить поставленную задачу качественно, то есть, чтобы выводилось «1 товар», «2 товарА», «5 товарОВ», а не «1 товаров» и «2 товаров».


Количественные и порядковые числительные в английском языке

Да уж, тут англичанам хорошо, у них если один товар, то «product», а если не один, то «products». В русском же языке есть три формы множественного числа, да ещё и слово постоянно склоняется в зависимости от чисел, которые стоят перед ним.

Поэтому передо мной встал выбор — либо вообще избавиться от надписи с общим числом товаров, либо как-то упростить её, либо добавить функцию, которая будет склонять слова — на третьем варианте я и остановился:

/* * $num число, от которого будет зависеть форма слова * $form_for_1 первая форма слова, например Товар * $form_for_2 вторая форма слова - Товара * $form_for_5 третья форма множественного числа слова - Товаров */ function true_wordform ( $num , $form_for_1 , $form_for_2 , $form_for_5 ) { $num = abs ( $num ) % 100 ; // берем число по модулю и сбрасываем сотни (делим на 100, а остаток присваиваем переменной $num) $num_x = $num % 10 ; // сбрасываем десятки и записываем в новую переменную if ( $num > 10 && $num < 20 ) // если число принадлежит отрезку [11;19] return $form_for_5 ; if ( $num_x > 1 && $num_x < 5 ) // иначе если число оканчивается на 2,3,4 return $form_for_2 ; if ( $num_x == 1 ) // иначе если оканчивается на 1 return $form_for_1 ; return $form_for_5 ; }

Если вы хотите использовать эту функцию в WordPress, то можете вставить её в файл functions.php — вы можете найти его в папке с темой.

Всё довольно просто. Теперь, когда я расписал, как это работает, приведу пример:

$max_product = 5 ; // число, эта переменная может задаваться через какую-то другую функцию или доставаться из базы - неважно echo $max_product . ' ' . true_wordform ( $max_product , 'товар' , 'товара' , 'товаров' ) ; // в результате получится "5 товаров"

Читайте также о том, как реализовать склонение слов на JavaScript .

Смотрите также

Чтение RSS
rss