Как я могу использовать PHP NumberFormatter с PADDING_POSITION и CURRENCY?Php

Кемеровские программисты php общаются здесь
Anonymous
Как я могу использовать PHP NumberFormatter с PADDING_POSITION и CURRENCY?

Сообщение Anonymous »

Я пытаюсь добиться того же, чего могу достичь в JavaScript, вот так:

Код: Выделить всё

Intl.NumberFormat('en-CA', {style: 'currency', currency: 'CAD', notation: 'compact', maximumSignificantDigits: 5 }).format(12345000000);
// Output: $12.345B"
Intl.NumberFormat('fr-CA', {style: 'currency', currency: 'CAD', notation: 'compact', maximumSignificantDigits: 5 }).format(12345000000);
// Output: "12,345 G$"
Я могу сделать краткую запись следующим образом:

Код: Выделить всё

$formatter = new NumberFormatter('en_CA', NumberFormatter::PADDING_POSITION);
$formatter->setAttribute(NumberFormatter::SIGNIFICANT_DIGITS_USED, 5);
echo $formatter->format(12345000000);

// Output: 12.345B

$formatter = new NumberFormatter('fr_CA', NumberFormatter::PADDING_POSITION);
$formatter->setAttribute(NumberFormatter::SIGNIFICANT_DIGITS_USED, 5);
echo $formatter->format(12345000000);

// Output: 12,345 G
Или я могу отформатировать валюту следующим образом:

Код: Выделить всё

$formatter = new NumberFormatter('en_CA', NumberFormatter::CURRENCY);
echo $formatter->formatCurrency(12345000000, 'CAD');

// Output: $12,345,000,000.00

$formatter = new NumberFormatter('fr_CA', NumberFormatter::CURRENCY);
echo $formatter->formatCurrency(12345000000, 'CAD');

// Output: 12 345 000 000,00 $
Но я не могу совместить эти два понятия. Если я попытаюсь это сделать, $ не отобразится:

Код: Выделить всё

$formatter = new NumberFormatter('en_CA', NumberFormatter::PADDING_POSITION);
$formatter->setAttribute(NumberFormatter::SIGNIFICANT_DIGITS_USED, 5);
echo $formatter->formatCurrency(12345000000, 'CAD');

// Output: 12.345B

$formatter = new NumberFormatter('fr_CA', NumberFormatter::PADDING_POSITION);
$formatter->setAttribute(NumberFormatter::SIGNIFICANT_DIGITS_USED, 5);
echo $formatter->formatCurrency(12345000000, 'CAD');

// Output: 12,345 G
Документация php.net для NumberFormatter на удивление скудна. Является ли то, что я пытаюсь сделать, невозможным или здесь есть какой-то другой трюк?
Я знаю, что могу реализовать здесь собственное решение, но мне бы хотелось иметь возможность полагаться на встроенные l18n такие же методы, как я в JavaScript.

Подробнее здесь: https://stackoverflow.com/questions/788 ... d-currency

Вернуться в «Php»