Если я хочу отобразить заданное число как порядковый номер, я бы сделал это следующим образом:
<?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