numfmt_create
funkcja
Tworzy obiekt NumberFormatter formatujący liczby i waluty zgodnie z locale (np. 'pl_PL' → '1 234,56 zł'). Wymaga rozszerzenia intl.
numfmt_create(string $locale, int $style, ?string $pattern = null): ?NumberFormatter
numfmt_create tworzy obiekt NumberFormatter, który następnie umożliwia formatowanie liczb i walut zgodnie z konwencjami danej lokalizacji. Dla 'pl_PL' separator tysięcy to spacja nierozdzielająca (U+00A0), separator dziesiętny to przecinek, a waluta to zł.
Stałe $style (wybrane):
| Stała | Opis |
|---|---|
| NumberFormatter::DECIMAL | liczba dziesiętna |
| NumberFormatter::CURRENCY | kwota z symbolem waluty |
| NumberFormatter::PERCENT | procent |
| NumberFormatter::SPELLOUT | liczba słownie |
Funkcja zwraca null przy nieprawidłowym $locale. Wymaga rozszerzenia intl.
<?php
declare(strict_types=1);
// Formatter dziesiętny dla polskiej lokalizacji
$decimal = numfmt_create('pl_PL', NumberFormatter::DECIMAL);
echo numfmt_format($decimal, 1234.5); // 1 234,5 (separator tysięcy to U+00A0 — twarda spacja, nie zwykła ' ')
echo numfmt_format($decimal, 1000000); // 1 000 000
// Formatter walutowy
$currency = numfmt_create('pl_PL', NumberFormatter::CURRENCY);
echo numfmt_format_currency($currency, 1234.56, 'PLN'); // 1 234,56 zł
// Formatter procentowy
$percent = numfmt_create('pl_PL', NumberFormatter::PERCENT);
echo numfmt_format($percent, 0.1234); // 12%