Показывать номер в качестве условного номера в «текстовой форме» с помощью класса NumberFormatter PHP?

Если я хочу отобразить заданное число как порядковый номер, я бы сделал это следующим образом:

<?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 ); ?> 

Но если я хочу отобразить заданное число как порядковый номер в форме слова (например, первый, второй, третий и т. Д.), Используя встроенную функцию / класс NumberFormatter , NumberFormatter как NumberFormatter , как это сделать? Является ли это возможным?

Ссылки по теме:

  • 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

Вы хотите использовать SPELLOUT формата SPELLOUT , а не ORDINAL .

Следующая проблема заключается в том, как сообщить формату использовать конкретный набор правил, который вас интересует; а именно %spellout-ordinal . Это можно сделать, используя setTextAttribute() .

пример

 $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; } 

Вывод

 first second third fourth fifth