本文概述
当前拥有最多用户的频道有65119648个用户。可能你不是很容易阅读数字, 所以像65M或6511K这样的缩写更容易阅读是吗?许多人确实估计这种功能的实用性, 因此, 如果你的网站或应用程序处理的是没人想完全阅读的大量数字, 请给他们显示一个缩写。
在本文中, 我们将向你展示2种实现, 以使用PHP生成数字的缩写。
A.确切的缩写
如果你愿意精确显示出Providen Number的缩写, 则此实现可以解决问题:
<?php
/**
* Function that converts a numeric value into an exact abbreviation
*/
function number_format_short( $n, $precision = 1 ) {
if ($n < 900) {
// 0 - 900
$n_format = number_format($n, $precision);
$suffix = '';
} else if ($n < 900000) {
// 0.9k-850k
$n_format = number_format($n / 1000, $precision);
$suffix = 'K';
} else if ($n < 900000000) {
// 0.9m-850m
$n_format = number_format($n / 1000000, $precision);
$suffix = 'M';
} else if ($n < 900000000000) {
// 0.9b-850b
$n_format = number_format($n / 1000000000, $precision);
$suffix = 'B';
} else {
// 0.9t+
$n_format = number_format($n / 1000000000000, $precision);
$suffix = 'T';
}
// Remove unecessary zeroes after decimal. "1.0" -> "1"; "1.00" -> "1"
// Intentionally does not affect partials, eg "1.50" -> "1.50"
if ( $precision > 0 ) {
$dotzero = '.' . str_repeat( '0', $precision );
$n_format = str_replace( $dotzero, '', $n_format );
}
return $n_format . $suffix;
}
这表示用小数表示缩写, 例如
<?php
$examples = array(15, 129, 400, 1500, 14350, 30489, 50222, 103977 , 2540388, 53003839);
foreach($examples as $example){
echo "$example => " . number_format_short($example) . "\n";
}
/*
Outputs:
15 => 15
129 => 129
400 => 400
1500 => 1.5K
14350 => 14.4K
30489 => 30.5K
50222 => 50.2K
103977 => 104K
2540388 => 2.5M
53003839 => 53M
*/
此实现使用number_format函数, 该函数格式化成千上万个分组的数字。
B.通用缩写
如果你只愿意显示要约号的重要部分(没有确切的千位组), 则此实现可以解决问题:
<?php
/**
* Function that converts a numeric value into an abbreviation.
*/
function number_format_short( $n ) {
if ($n > 0 && $n < 1000) {
// 1 - 999
$n_format = floor($n);
$suffix = '';
} else if ($n >= 1000 && $n < 1000000) {
// 1k-999k
$n_format = floor($n / 1000);
$suffix = 'K+';
} else if ($n >= 1000000 && $n < 1000000000) {
// 1m-999m
$n_format = floor($n / 1000000);
$suffix = 'M+';
} else if ($n >= 1000000000 && $n < 1000000000000) {
// 1b-999b
$n_format = floor($n / 1000000000);
$suffix = 'B+';
} else if ($n >= 1000000000000) {
// 1t+
$n_format = floor($n / 1000000000000);
$suffix = 'T+';
}
return !empty($n_format . $suffix) ? $n_format . $suffix : 0;
}
该代码段将生成主数字和加号, 而不是生成带有”小数”的缩写, 例如:
<?php
$examples = array(15, 129, 400, 1500, 14350, 30489, 50222, 103977 , 2540388, 53003839);
foreach($examples as $example){
echo "$example => " . number_format_short($example) . "\n";
}
/*
Outputs:
15 => 15
129 => 129
400 => 400
1500 => 1K+
14350 => 14K+
30489 => 30K+
50222 => 50K+
103977 => 103K+
2540388 => 2M+
53003839 => 53M+
*/
编码愉快!
评论前必须登录!
注册