Разделение большого числа на тысячи точками (запятыми, пробелами)

admin друпал drupal

Допустим у нас есть большое число и чтобы было удобнее его считать лучше всего его разделить на тысячи точками (запятыми или пробелами). Я это хорошо заметно на числах более миллиона, ну вот например:

10000000

я думаю нужно сначала подсчитать сколько нулей, чтобы понять какое это число. А если записать это число так:

10 000 000

То думаю вы без тени сомнения поймете что это 10 млн, ну или записать это так:

10,000,000

10.000.000

Что я думаю тоже очень удобно читать

Итак:

$price = 10000000; //вводим число 
$price_len = strlen($price); //подсчитываем количество знаков 
if($price_len > 3 && $price_len 6){ // если нужно 2 точки 
  $price_len = $price_len - 6;
  $price1 = substr( $price, 0 , $price_len);
  $price2 = substr( $price, -6 , -3);
  $price3 = substr( $price, -3);
  $price = $price1 . ',' . $price2 . ',' . $price3; 
} 
print '$' . $price; // выводим число в долларах или можно дописать рублей 

Комментарии

Добавить комментарий

Войти, используя Loginza Google Account Yandex Mail.ru Vkontakte Facebook
(If you're a human, don't change the following field)
Your first name.
(If you're a human, don't change the following field)
Your first name.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Зачем так сложно?

Не проще ли использовать стандартные функции php?

number_format():

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

$number = 1234.56;
// english notation (default)
$english_format_number = number_format($number);
// 1,235
// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

Используется так:

number_format($number, $d, $dr, $dt'); 

Где $number - число, $d - количество знаков после запятой, $dr - разделитель целой и дробной части, $dt - разделитель групп цифр.

Также существует функция money_format.

function module_reverse($str)

<?php
function module_reverse($str){
    $s = str_split($str);
    $str = array_reverse($s);
    return preg_replace("/_/", " ", implode("", $str));
}

function module_commify($str){
    $text = module_reverse($str);
    $p = "/(\d\d\d)(?=\d)(?!\d*\.)/";
    $r = "\$1_";
    return module_reverse(preg_replace($p, $r, $text));
}

module_commify('123456789.12344555');
?>

Ну и каптча! Ять!