У меня есть строка кода, которая получает количество строк в моей таблице, а затем отображает счетчик. В этом случае отображается количество загрузок.
Сейчас подсчет очень мал, но когда он становится больше (больше 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)