9

編集:以下の関数は省略形を正しく実行し、 @Asad のソリューションを実装しました

こんにちは、私は現在、いいねボタンに取り組んでいます。すべての基本機能がうまく機能していますが、数字の略語コードを開始しましたが、略語をより正確にする方法がわからないため、壁にぶつかりました。

1000、1230、1500、154000、1500000、1000000 などの番号があります。

そして、それらを略語でフォーマットしたいと思います。すなわち

千の場合は、1k、1.1k、2k、10k、10.5k など...

数万、数十万、数百万など...

現時点では、次の機能がありますが、十分に具体的ではありません。

function abreviateTotalCount($value) 
{

    $abbreviations = array(12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => '');

    foreach($abbreviations as $exponent => $abbreviation) 
    {

        if($value >= pow(10, $exponent)) 
        {

            return round(floatval($value / pow(10, $exponent))).$abbreviation;

        }

    }

}

前もって感謝します!

4

5 に答える 5

6

小数点以下の桁数を保持する場合は、intvalの代わりにfloatvalを使用します。

return round(floatval($value / pow(10, $exponent)),1).$abbreviation;

浮動小数点表現を取得し、小数点以下1桁に丸めます。

于 2012-10-24T13:13:52.253 に答える
2

そのプロジェクトを確認して ください https://github.com/gburtini/Humanize-PHP/blob/master/Humanize.php

php > echo HumanizePHP::intword(256,0,0);
3 hundred
php > echo HumanizePHP::intword(256,0,1);
2.6 hundred
php > echo HumanizePHP::intword(256,0,2);
2.56 hundred

少なくとも、この実装からアイデアを得ることができます

于 2012-10-24T13:16:46.043 に答える
1

intval() の代わりに number_format() を使用して、必要な小数点以下の桁数の数値を取得します。

于 2012-10-24T13:19:08.270 に答える