[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
いやあこれは便利だ。今日もネットの叡智に助けていただきました。ありがたいことです。
スポンサーリンク