【问题标题】:Display number as Ordinal number in 'word form' with NumberFormatter PHP class?使用 NumberFormatter PHP 类以“单词形式”将数字显示为序数?
【发布时间】:2013-10-24 22:06:54
【问题描述】:

如果我想将给定的数字显示为序数,我会这样做:

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

?>

但是,如果我想使用 内置 PHP 函数/类将给定数字显示为 单词形式(例如第一、第二、第三等)的序数 喜欢NumberFormatter,我该怎么做?有可能吗?

相关链接:

【问题讨论】:

    标签: php numbers number-formatting ordinal numberformatter


    【解决方案1】:

    您希望使用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
    

    【讨论】:

    • 如果我没记错的话,就是一个小错误。应该是echo $formatter-&gt;format($i) . PHP_EOL;。我说的对吗?
    • 当然。在写作中,我缩短了变量名(以使第二行适合 SO 的狭窄页面)然后更好地考虑并换行......留下那个错字伪影。
    • P.S.所以答案是维基。如果/当您发现拼写错误时,请随时修正。
    • 最后一件事。你知道我怎样才能让第一个字母大写(First,Second,Third ...)吗?我的意思是我需要使用ucfirst() 之类的东西还是有内置的方法?
    • ucfirst() 没问题,我想。
    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 2012-05-02
    相关资源
    最近更新 更多