как переформатировать число с запятыми

У меня есть строка кода, которая получает количество строк в моей таблице, а затем отображает счетчик. В этом случае отображается количество загрузок.

Сейчас подсчет очень мал, но когда он становится больше (больше 1000), я хотел бы отформатировать его для отображения с запятыми в примере с правильными точками:

1000

100000

1000000

Или, возможно, с. 1.000 1.000.000

Каков самый простой способ сделать это?

Вы можете использовать функцию number_format() :

 $str = number_format($number); 

Использовать "." вместо ",":

 $str = number_format($number, 0, ',', '.'); 

Вы также можете использовать FORMAT (X, D) в своем запросе:

Форматирует число X в формате «#, ###, ###. ##», округленное до D десятичных знаков и возвращающее результат в виде строки. Если D равно 0, результат не имеет десятичной или дробной части.

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' 

Редактировать:

Я собирался добавить, что « недостатком этого метода является то, что вы не можете использовать этот номер в своем коде », но, видимо, это уже не проблема, начиная с PHP 5.3, благодаря функции parse класса NumberFormatter :

NumberFormatter :: parse numfmt_parse

– Разбор номера

пример

 <?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"; ?> 

Я считаю, что вы ищете PHP-встроенный number_format .

Если кто-то ищет обратную функцию number_format PHP (по названию этого вопроса), вот один из них:

 /** * @param string $string * @param int $decimals * @param string $dec_point * @param string $thousands_sep * * @throws InvalidArgumentException * @return float */ function number_from_format($string, $decimals = 0, $dec_point = '.', $thousands_sep = ',') { $buffer = $string = (string) $string; $buffer = strtr($buffer, array($thousands_sep => '', $dec_point => '.')); $float = (float) $buffer; $test = number_format($float, $decimals, $dec_point, $thousands_sep); if ($test !== $string) { throw new InvalidArgumentException(sprintf('Unable to parse float from "%s" as number "%s".', $string, $test)); } return $float; } 

Пример использования:

 var_dump(number_from_format('1,200.00', 2)); # double(1200)