[PHP] 1を1st、2を2nd、3を3rd、4以上を4thに変換する関数
スポンサーリンク
表題の通り、PHPで数値を1st, 2nd, 3rd, 4thという風に変換する関数のメモです。
日付を表示するdate()関数には英語形式の序数を表すサフィックスを表示する“S”オプションが存在し、date("jS")とすると、1日なら1st、2日なら2nd、3日なら3rd、4日以降は4th…と出力することができます。
しかし、数値から1stなどの文字列を得たいのは、日付を出力するときとは限りません。良い方法がないか調べてみたところ、英語サイトばかりが大量に出てきました。必要なのは末尾が1なら1st、2なら2nd、3なら3rd、4以上はthを付加する関数です。
こちらのサイトで紹介されていたのが以下のコードです。
function ordSuffix($n) {
$str = "$n";
$t = $n > 9 ? substr($str,-2,1) : 0;
$u = substr($str,-1);
if ($t==1) return $str . 'th';
else switch ($u) {
case 1: return $str . 'st';
case 2: return $str . 'nd';
case 3: return $str . 'rd';
default: return $str . 'th';
}
}
echo ordSuffix(1);//1st
echo ordSuffix(11);//11th
いやあこれは便利だ。今日もネットの叡智に助けていただきました。ありがたいことです。
スポンサーリンク