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