'6k视图'是什么意思,我如何格式化PHP中的数字

Mos*_*ady 9 php

"6k视图"是什么意思,我如何在PHP中格式化这个数字?

Gum*_*mbo 25

kKilo前缀的缩写,意思是千.所以6k意味着六千.

您可以使用以下功能以这种方式格式化数字:

function format($number) {
    $prefixes = 'kMGTPEZY';
    if ($number >= 1000) {
        for ($i=-1; $number>=1000; ++$i) {
            $number /= 1000;
        }
        return floor($number).$prefixes[$i];
    }
    return $number;
}
Run Code Online (Sandbox Code Playgroud)

或者使用对数基数10和取幂:

function format($number) {
    $prefixes = 'kMGTPEZY';
    if ($number >= 1000) {
        $log1000 = floor(log10($number)/3);
        return floor($number/pow(1000, $log1000)).$prefixes[$log1000-1];
    }
    return $number;
}
Run Code Online (Sandbox Code Playgroud)

  • @Gordon:也修正了. (2认同)

Geo*_*off 11

StackOverflow上的"6k views"是指问题收到的观看次数.这意味着6000次观看.

如果你想在php中格式化类似的样式编号,那么尝试类似的东西

$number = "";
if( $value > 1000 )
{
    $number .= floor($value / 1000) . "k";
} else {
    $number .= $value;
}
echo $number . " views".
Run Code Online (Sandbox Code Playgroud)

显然,如果需要,您可以为m,g和t视图添加案例.


Gor*_*don 8

摘自http://tamlyn.org/2008/12/formatting-bytes-with-significant-figures-in-php/

/** Calculate $value to $sigFigs significant figures */
function sigFig($value, $sigFigs = 3) {
    //convert to scientific notation e.g. 12345 -> 1.2345x10^4
    //where $significand is 1.2345 and $exponent is 4
    $exponent = floor(log10(abs($value))+1);
    $significand = round(($value
        / pow(10, $exponent))
        * pow(10, $sigFigs))
        / pow(10, $sigFigs);
    return $significand * pow(10, $exponent);
}

/** Format $value with the appropriate SI prefix symbol */
function format($value, $sigFigs = 3)
{
    //SI prefix symbols
    $units = array('', 'k', 'M', 'G', 'T', 'P', 'E');
    //how many powers of 1000 in the value?
    $index = floor(log10($value)/3);
    $value = $index ? $value/pow(1000, $index) : $value;
    return sigFig($value, $sigFigs) . $units[$index];
}
Run Code Online (Sandbox Code Playgroud)

这样做*11,因为*10太明显

for($number = 100; $number < 100000000000000000000; $number*=11) {
   echo format($number), PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)

100 1.1k 12.1k 133k 1.46M 16.1M 177M 1.95G 21.4G 236G 2.59T 28.5T 314T 3.45P 38P 418P 4.59E 50.5E 
Run Code Online (Sandbox Code Playgroud)

如果你需要小数,使用上面的,否则Gumbo的解决方案更紧凑.得到:

100 1k 12k 133k 1M 16M 177M 1G 21G 235G 2T 28T 313T 3P 37P 417P 4E 50E
Run Code Online (Sandbox Code Playgroud)