как переформатировать число запятыми - PullRequest
2 голосов
/ 02 октября 2009

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

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

1000

100000

1000000

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

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

Ответы [ 4 ]

16 голосов
/ 02 октября 2009

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

$str = number_format($number);

Для использования "." вместо ",":

$str = number_format($number, 0, ',', '.');
5 голосов
/ 02 октября 2009

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

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

mysql> ВЫБРАТЬ ФОРМАТ (12332.123456, 4);

    -> '12,332.1235'

mysql> ВЫБРАТЬ ФОРМАТ (12332.1,4);

    -> '12,332.1000'

mysql> ВЫБРАТЬ ФОРМАТ (12332.2,0);

    -> '12,332'

Edit:

Я собирался добавить, что " недостатком использования этого метода является то, что вы не можете использовать это число в своем коде ", но, очевидно, это больше не проблема, начиная с PHP 5.3, благодаря анализ функция 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";
?>
2 голосов
/ 02 октября 2009

Я полагаю, вы ищете встроенный PHP number_format.

1 голос
/ 28 октября 2012

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

/**
 * @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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...