tags:

views:

123

answers:

3

I have a line of code that get a count of rows in my table and then display the count. In this case it display the number of downloads.

Right now the count is very small but when it gets larger ( great than 1000) I would like to format it to display with commas in the correct spots example:

1,000

100,000

1,000,000

Or perhaps with a . 1.000 1.000.000

What is the simplest way to do this?

+14  A: 

You can use the number_format() function:

$str = number_format($number);

To use "." instead of ",":

$str = number_format($number, 0, ',', '.');
Greg
+2  A: 

I believe you are looking for the PHP built-in number_format.

LiraNuna
+5  A: 

You can also use FORMAT(X, D) in your query:

Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part.

mysql> SELECT FORMAT(12332.123456, 4);

    -> '12,332.1235'

mysql> SELECT FORMAT(12332.1,4);

    -> '12,332.1000'

mysql> SELECT FORMAT(12332.2,0);

    -> '12,332'

Edit:

I was about to add that "the downside of using this method is that you cannot that number in your code", but apparently this is not a problem anymore, starting from PHP 5.3, thanks to the parse function of NumberFormatter class:

NumberFormatter::parse numfmt_parse

— Parse a number

Example

<?php
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo $fmt->parse($num)."\n";
echo $fmt->parse($num, NumberFormatter::TYPE_INT32)."\n";
?>
Anax
Hmmm good to know thanks.
ian