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:

有帮助吗?

解决方案

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top