序数のルールは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:
- [PHP]switch()は通常では厳密に型を比較しない
- [PHP]HSV(HSB)をRGBに変換する
- [PHP]JSON+cURLで時刻同期型ワンタイムパスワードによる認証
- [PHP]Fatal Error発生時にログを作成する
- [PHP]逆ポーランド記法への変換と計算
- [PHP]GDでアンチエイリアスのかかった綺麗な楕円を描く
- [HTML5+JS+Canvas, PHP]アナログ時計の作り方
- [PHP]クラスメソッドをキャメルケース、スネークケースのどちらでも呼び出せるようにする