序数のルールは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";
}
}
}
