If I'd like to display a given number as ordinal number, I'd do it like this:
<?php
// Needs 'php5-intl' package to be installed on Debian/Ubuntu
$set_format = numfmt_create( 'en_US', NumberFormatter::ORDINAL );
// '3' is displayed as '3rd'
echo numfmt_format( $set_format, 3 );
?>
But if I'd like to display a given number as ordinal number in word form (e.g. first, second, third, etc.) using a built-in PHP function/class like NumberFormatter, how do I do that? Is it possible?
Related Links:
http://www.php.net/manual/en/class.numberformatter.php
http://www.php.net/manual/en/numberformatter.create.php
http://www.php.net/manual/en/numberformatter.format.php
You want to be using the SPELLOUT format style, rather thanORDINAL.
The next problem is how to tell the formatter to use the particular ruleset that you are interested in; namely %spellout-ordinal. This can be done by using setTextAttribute().
Example
$formatter = new NumberFormatter('en_US', NumberFormatter::SPELLOUT);
$formatter->setTextAttribute(NumberFormatter::DEFAULT_RULESET,
"%spellout-ordinal");
for ($i = 1; $i <= 5; $i++) {
echo $formatter->format($i) . PHP_EOL;
}
Output
first
second
third
fourth
fifth
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With