Форматирование целых чисел в 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, достаточно убрать описание типов параметров и результата функции. Она проста в использовании и, в простейшем случае, довольствуется единственным параметром — целым числом.