Php 将数字格式化为缩写数字

Php 将数字格式化为缩写数字,php,mysql,sql,converter,varchar,Php,Mysql,Sql,Converter,Varchar,我有一个数据库,其中有一列包含数值格式的值,例如: 5,000 for 5k 86,600 for 86.6k 4,100,000 for 4.1m 在浏览器中显示时,它应该显示为5000的5k,86600的86.6k,等等。我需要php中的代码。如果有任何内置函数可以执行此操作,请提及。如果您将它们作为数字,则可以直接使用此函数 function formatValue($size, $precision = 1) { static $suffixes = array('',

我有一个数据库,其中有一列包含数值格式的值,例如:

5,000 for 5k 

86,600 for 86.6k

4,100,000 for 4.1m

在浏览器中显示时,它应该显示为5000的5k,86600的86.6k,等等。我需要php中的代码。如果有任何内置函数可以执行此操作,请提及。

如果您将它们作为数字,则可以直接使用此函数

function formatValue($size, $precision = 1)
{
    static $suffixes = array('', 'k', 'm');
    $base = log($size) / log(1000);

    return round(pow(1000, $base - floor($base)), $precision) . $suffixes[floor($base)];
}
如果您没有将它们作为数字,请使用

对于您的特殊情况,您可以使用小肮脏的黑客,但我不推荐它,如果你有更多的特殊情况

function formatValue($size, $precision = 1)
{
    static $suffixes = array('', 'k', 'm');
    $base = log($size) / log(1000);

    if ($base >= 5/3 && $base < 2) {
        return round(pow(1000, $base - floor($base)) / 100, $precision) . 'lakh';
    }

    return round(pow(1000, $base - floor($base)), $precision) . $suffixes[floor($base)];
}
函数formatValue($size,$precision=1)
{
静态$后缀=数组(''k','m');
$base=log($size)/log(1000);
如果($base>=5/3&&$base<2){
返回回合(战力(1000,$base-floor($base))/100,$precision)。'lakh';
}
返回回合(pow(1000,$base-floor($base)),$precision.$后缀[floor($base)];
}

所以您只想交换单词?数据库中确实包含带逗号的数字?我认为没有任何内置的缩写数字。您必须自己编写。不,数据库只包含数字而不包含逗号。您可能想添加一些东西来删除逗号,虽然谢谢您的代码,但100000它给出了10万,我需要它打印为10万。@Rajesh:您可以根据其他格式修改函数。@Rajesh更新以反映您的请求。