2.11.3. Discussion
It's slightly shorter to write the line as:
print "Your search returned $number hit" . ($number == 1 ? '' : 's') . '.';
However, for odd pluralizations, such as
"person" versus
"people," we find it clearer to
break out the entire word rather than just the letter.
Example 2-2. pc_may_pluralize( )
function pc_may_pluralize($singular_word, $amount_of) {
// array of special plurals
$plurals = array(
'fish' => 'fish',
'person' => 'people',
);
// only one
if (1 == $amount_of) {
return $singular_word;
}
// more than one, special plural
if (isset($plurals[$singular_word])) {
return $plurals[$singular_word];
}
// more than one, standard plural: add 's' to end of word
return $singular_word . 's';
}
Here are some examples:
$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!
If you plan to have multiple plurals inside your code, using a
function such as pc_may_pluralize( ) increases
readability. To use the function, pass pc_may_pluralize(
) the singular form of the word as the first argument and
the amount as the second. Inside the function,
there's a large array, $plurals,
that holds all the special cases. If the $amount
is 1, you return the original word. If
it's greater, you return the special pluralized
word, if it exists. As a default, just add an
"s" to the end of the word.