Domanda

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:

È stato utile?

Soluzione

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top