[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

いやあこれは便利だ。今日もネットの叡智に助けていただきました。ありがたいことです。

スポンサーリンク


Comment