[PHP]数字に序数詞をつけて 1st, 2nd 3rd のように出力する

Pocket

序数のルールは1の位が 1 であれば 1st、2 であれば 2nd、3 であれば 3rd となり、それ以外は th をつけます。
ただし、10の位が 1 の場合はすべて th がつきます。

特定の桁を取得する場合は剰余(10で割った余り)を利用すると簡単です。

以下のコードは 1〜30 の数字を序数に変換して表示するサンプルです。

<?php
for($i = 1; $i <= 30; $i++){
    echo ordinalNumber($i) . "\n";
}

function ordinalNumber( $num ){
    $n = $num % 10;
    $t = floor($num / 10) % 10;
    
    if($t === 1){
        return $num . "th";
    } else {
        switch($n) {
            case 1:
                return $num . "st";
            case 2:
                return $num . "nd";
            case 3:
                return $num . "rd";
            default:
                return $num . "th";
        }
    }
}

Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です