Форматирование целых чисел в PHP
Для форматирования чисел в PHP есть стандартные средства: функция number_format (PHP 4+) и класс NumberFormatter (PHP 5.3+).
Бывают случаи, когда необходимо группы разрядов целого числа разделить неразрывным пробелом ( ), добавить знак „+“ для положительных чисел и знак „−“ (−) для отрицательных. Функция number_format не позволяет осуществить требуемое форматирование. Класс NumberFormatter, конечно же, позволяет это сделать, но уж очень он монструозный.
Поскольку в стандартных средствах PHP для форматирования чисел мною обнаружен фатальный недостаток, предлагаю свой «велосипед». Тем более, что он не такой уж и сложный:
/**
* Форматирует целое число по разрядам, используя, при необходимости, знаки +/−
*
* @param int $value
* @param string $thousands_separator
* @param string $sign_plus
* @param string $sign_minus
* @return string
*/
function int_format(int $value, string $thousands_separator = ' ', string $sign_plus = '', string $sign_minus = '−'): string
{
$string_value = (string) abs($value);
for ($i = strlen($string_value) - 3; $i > 0; $i -= 3) {
$string_value = substr_replace($string_value, $thousands_separator, $i, 0);
}
if (($value > 0) && strlen($sign_plus)) {
$string_value = $sign_plus . $string_value;
} elseif (($value < 0) && strlen($sign_minus)) {
$string_value = $sign_minus . $string_value;
}
return $string_value;
}
Функция int_format писалась для использования в проектах на PHP 7+. Если же требуется её использование в более ранних версиях PHP, достаточно убрать описание типов параметров и результата функции. Она проста в использовании и, в простейшем случае, довольствуется единственным параметром — целым числом.