2013-10-16 24 views
4

如果我想顯示給定數量的序數,我不喜歡這樣寫道:以NumberFormatter PHP類的'Word形式'顯示序號爲序號?

<?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,我該怎麼做?可能嗎?

相關鏈接:

回答

13

你想使用格式爲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 
+0

如果我沒有錯,有一個小錯誤。它會是'echo $ formatter->格式($ i)。 PHP_EOL;'。我對嗎? –

+0

絕對如此。在寫作時,我縮短了變量名稱(以使第二行適合SO的狹窄頁面),然後思考得更好,並將行結束......從而留下錯字人造物。 – salathe

+0

P.S.所以答案是維基。如果/當您發現錯誤,請隨時修改拼寫錯誤。 – salathe