格式化后缀为k m b t的数字

时间:2017-02-04 07:26:33

标签: php

我有这个功能正常。但如果说值为null,那么我希望它显示0而不是“”空白。我向0 => "0"添加了$abbrevs,但我没有得到预期的结果。

我的功能:

function numberConvert($number) {
    $abbrevs = array(12 => "T", 9 => "B", 6 => "M", 3 => "K", 0 => "");
    foreach($abbrevs as $exponent => $abbrev) {
        if($number >= pow(10, $exponent)) {
            $display_num = $number / pow(10, $exponent);
            $decimals = ($exponent >= 3 && round($display_num) < 100) ? 1 : 0;
            return number_format($display_num,$decimals) . $abbrev;
        }
    }
}

有人可以提出解决方案吗?

1 个答案:

答案 0 :(得分:-1)

当10被提升到任何数字时,结果总是不为0(任何数字和任何有限幂都是如此),所以没有机会0 >= pow(10,$exponent)

function numberConvert($number) {
    $abbrevs = array(12 => "T", 9 => "B", 6 => "M", 3 => "K", 0 => "");
    foreach($abbrevs as $exponent => $abbrev) {
        if($number >= pow(10, $exponent)) {
            $display_num = $number / pow(10, $exponent);
            $decimals = ($exponent >= 3 && round($display_num) < 100) ? 1 : 0;
            return number_format($display_num,$decimals) . $abbrev;
        }
    }
    return number_format(is_numeric($display_num)?$display_num:0,0); //Not returned yet? Fall back to this.
}