Правильная печать слов во множественном числе на языке программирования-PHP
Решение
Это делается при помощи условного выражения:
$number = 4;
print "Your search returned $number " . ($number == 1 ? 'hit' : 'hits') . '.';
Your search returned 4 hits.
Обсуждение
Можно записать эту строку немного короче:
print "Your search returned $number hit" . ($number == 1 ? '' : 's') . '.';
Однако в других случаях образования множественного числа, таких как «person» → «people», очевидно, что надо изменить все слово, а не одну букву.
Есть другой вариант – вызывать одну функцию для всех случаев образования множественного числа, как показано в функции pc_may_pluralize() из примера:
Пример №1:
function pc_may_pluralize($singular_word, $amount_of) {
// массив особых слов во множественном числе
$plurals = array(
'fish' => 'fish',
'person' => 'people',
);
// единственное значение
if (1 == $amount_of) {
return $singular_word;
}
// более одного, особая форма множественного числа
if (isset($plurals[$singular_word])) {
return $plurals[$singular_word];
}
// более одного, обычная форма множественного числа:
// добавить 's' в конце слова
return $singular_word . 's';
}
Примеры:
$number_of_fish = 1;
print "I ate $number_of_fish " . pc_may_pluralize('fish',
$number_of_fish) . '.';
$number_of_people = 4;
print 'Soylent Green is ' . pc_may_pluralize('person',
$number_of_people) . '!';
I ate 1 fish.
Soylent Green is people!
Если в коде предполагается наличие нескольких слов во множественном числе, то нужна функция, облегчающая чтение, такая как pc_may_pluralize(). Этой функции передается слово в единственном числе в качестве первого аргумента и количество включений в качестве второго аргумента. В функцию включен большой массив, $plurals, содержащий все особые случаи. Если переменная $amount равна 1, то функция возвращает оригинальное слово. Если переменная больше единицы, то возвращается слово в особой форме множественного числа, если такая существует. По умолчанию добавляется только «s» в конце слова.(Применительно к словам английского языка)
Комментарии:
Комментариев нет
|
|
|