PHP.mk документација

NumberFormatter::create

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

numberformatter.create.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека numberformatter.create.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
NumberFormatter::create

Референца за `numberformatter.create.php` со подобрена типографија и навигација.

numberformatter.create.php

NumberFormatter::create

numfmt_create

NumberFormatter::__construct

Класата Collator

NumberFormatter::create -- numfmt_create -- NumberFormatter::__constructCreate a number formatter

= NULL

Object-oriented style (method)

public static NumberFormatter::create(string $locale, int $style, ?string $pattern = null): ?NumberFormatter

Процедурален стил

numfmt_create(string $locale, int $style, ?string $pattern = null): ?NumberFormatter

Обектно-ориентиран стил (конструктор):

public NumberFormatter::__construct(string $locale, int $style, ?string $pattern = null)

Creates a number formatter.

Параметри

locale

Locale in which the number would be formatted (locale name, e.g. en_CA).

style

Style of the formatting, one of the format style constants. If NumberFormatter::PATTERN_DECIMAL or NumberFormatter::PATTERN_RULEBASED is passed then the number format is opened using the given pattern, which must conform to the syntax described in » ICU DecimalFormat documentation or » ICU RuleBasedNumberFormat documentation, соодветно.

pattern

Pattern string if the chosen style requires a pattern.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. NumberFormatter објект или null при грешка.

Errors/Exceptions

А ValueError се фрла ако locale е невалидна. Пред PHP 8.4.0, невалиден режим би се прифатил тивко како

Дневник на промени

Верзија = NULL
8.4.0 А ValueError се фрла ако locale е невалидна. Пред PHP 8.4.0, невалиден режим би се прифатил тивко како
8.0.0 pattern сега е null.

Примери

Пример #1 numfmt_create() example

<?php
$fmt
= numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo
numfmt_format($fmt, 1234567.891234567890000)."\n";
$fmt = numfmt_create( 'it', NumberFormatter::SPELLOUT );
echo
numfmt_format($fmt, 1142)."\n";
?>

Пример #2 NumberFormatter::create() example

<?php
$fmt
= new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo
$fmt->format(1234567.891234567890000)."\n";
$fmt = new NumberFormatter( 'it', NumberFormatter::SPELLOUT );
echo
$fmt->format(1142)."\n";
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

1.234.567,891
millicentoquarantadue

Види Исто така

Белешки од корисници 3 белешки

F. Poirotte
пред 16 години
When formatting durations using the NumberFormatter::DURATION type, you may also need to use NumberFormatter::setTextAttribute to get the desired output.

<?php

$fmt = new NumberFormatter('en', NumberFormatter::DURATION);
// Outputs: string(7) "3:25:45"
var_dump($fmt->format(12345));

// "%in-numerals" is the default ruleset, so this results in the same as above.
$fmt->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%in-numerals");
// Outputs: string(7) "3:25:45"
var_dump($fmt->format(12345));

$fmt->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%with-words");
// Outputs: string(31) "3 hours, 25 minutes, 45 seconds"
var_dump($fmt->format(12345));

$fmt2 = new NumberFormatter('fr', NumberFormatter::DURATION);
// Outputs: string(7) "12 345"
// See notes below.
var_dump($fmt2->format(12345));

?>

This is a little counter-intuitive because there is not much doc available about the DURATION type.

Also, as far as I can tell, only the English (en) locale has support for the "%in-numerals" & "%with-words" rulesets. Other locales seem to simply format the input as if the DECIMAL type had been used (at least using "fr" or "de" as the target locale).

One way to provide that feature across different locales is to extract the ruleset implicitely used by NumberFormatter::DURATION and adapt it for the locales you're targetting. Use NumberFormatter::getPattern to extract the ruleset.
igorsantos07
пред 7 години
Although there are ORDINAL and SPELLOUT formatters, it's not possible to join these together to turn "2" into "second". You'll either get "2nd", or "two", or something unexpected if you try to use bitwise operators.
orrd101 at gmail dot com
пред 14 години
It should be noted that the locale string passed into NumberFormatter's constructor doesn't play with UCA keywords quite as readily as, say, the Collator and IntlDateFormatter classes' constructors.

According to the Unicode spec (http://www.unicode.org/reports/tr35), I should be able to specify a locale of "ja_JP@numbers=jpanfin" which, for spellout mode, should give me Japanese financial (ie. anti-forgery) numerals. When passed into NumberFormatter's constructor, "ja_JP@numbers=jpanfin" doesn't work.

However, when I look at a dump of NumberFormatter::getPattern() for the ja_JP locale, I see that the financial numerals *are* in there (as %financial). Here's how we wrangle them out of the NumberFormatter:

<?php
$number = 1234567890;

$formatter = new NumberFormatter('ja_JP', NumberFormatter::SPELLOUT);

$formatter->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%financial");

echo $formatter->format($number);
//above gives [拾弐億参千四百伍拾六萬七千八百九拾] (as opposed to [十二億三千四百五十六万七千八百九十]) - bingo!
?>
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.