Как я могу использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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