用PHP创建序数

序数只是表达该数字所在位置的一种方式。因此,对于数字1,此序数版本为1st。2是第二,3是第三,依此类推。

以下函数将计算出应在数字后面放置哪些序数文本。这将是“ st”,“ nd”,“ rd”和“ th”之一。

function getOrdinal($number){
 // 得到第一位数
 $digit = abs($number) % 10;
 $ext = 'th';
 // 如果最后两位数字在4到21之间,请加一个
 if(abs($number) %100 < 21 && abs($number) %100 > 4){
  $ext = 'th';
 }else{
  if($digit < 4){
   $ext = 'rd';
  }
  if($digit < 3){
   $ext = 'nd';
  }
  if($digit < 2){
   $ext = 'st';
  }
  if($digit < 1){
   $ext = 'th';
  }
 }
 return $number.$ext;
}

可以通过使用三元控制结构来缩短这套if语句。

function getOrdinal($number){
 // 得到第一位数
 $digit = abs($number) % 10;
 $ext = 'th';
$ext = ((abs($number) %100 < 21 && abs($number) %100 > 4) ? 'th' : (($digit < 4) ? ($digit < 3) ? ($digit < 2) ? ($digit < 1) ? 'th' : 'st' : 'nd' : 'rd' : 'th'));
 return $number.$ext;
}

这有点难以阅读,但占用的空间较小,除非您想更改语言,否则几乎不需要更改它。

这是运行中的代码的示例。

echo getOrdinal(1); //1st
echo getOrdinal(2); //2nd
echo getOrdinal(3); //3rd
echo getOrdinal(4); //4th
echo getOrdinal(11); //11th
echo getOrdinal(87654311); //87654311th