序数只是表达该数字所在位置的一种方式。因此,对于数字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