PHP 如何将数字转换成逗号分隔的形式?

例如1234567890,转换后变成1,234,567,890,每3个数字用,隔开。

610 4月之前 PHP

答案

用内置number_format()方法即可实现。

echo number_format($number);

自己实现(不支持小数点):

function number2thousands($number)
{
    $number = (string)strrev($number);           // 反转字符串
    $number = chunk_split($number, 3, ',');      // 以逗号,将字符串分隔成小段,每小段长度为3
    $number = strrev($number);                   // 再转回来

    return ltrim($number, ',');                  // 删除左边多余的逗号
}

答案解析

number_format()— 以千位分隔符方式格式化一个数字。

最多可以传递4个参数,控制浮点数精度千位符号小数点符号

语法:

number_format ( float $number [, int $decimals = 0 ] ) : string
number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," ) : string

本函数可以接受1个、2个或者4个参数(注意:不能是3个):

如果只提供第一个参数number的小数部分会被去掉 并且每个千位分隔符都是英文小写逗号","

如果提供两个参数number将保留小数点后的位数到你设定的值,其余同上

如果提供了四个参数number 将保留decimals个长度的小数部分, 小数点被替换为dec_point,千位分隔符替换为thousands_sep 例如:

$number = 1234.5678;
echo number_format($number, 2, '.', ',');   // 1,234.57