Start · Sprachen · PHP · Referenz · numfmt_get_attribute

numfmt_get_attribute

Funktion

Liefert den aktuellen Wert eines numerischen Attributs eines <code>NumberFormatter</code>-Objekts.

seit PHP 5.3.0 Kategorie: string

Signatur

numfmt_get_attribute(NumberFormatter $formatter, int $attribute): int|float|false

Beschreibung

numfmt_get_attribute() ist die prozedurale Variante von NumberFormatter::getAttribute() und gibt den Wert eines bestimmten Attributs des übergebenen Formatierungsobjekts zurück. Attribute steuern das Verhalten des Formatierungsvorgangs, z. B. die Anzahl der Nachkommastellen, Rundungsverhalten oder Gruppengrößen.

Typische Attribute sind z. B. NumberFormatter::MAX_FRACTION_DIGITS für die maximale Anzahl von Dezimalstellen, NumberFormatter::ROUNDING_MODE für die Rundungsstrategie oder NumberFormatter::GROUPING_SIZE für die Größe der Zifferngruppen. Alle verfügbaren Konstanten sind unter der Klasse NumberFormatter dokumentiert.

Diese Funktion eignet sich besonders, wenn man die aktuell gesetzten Formatierungsoptionen auslesen möchte, etwa um sie zu protokollieren, zu prüfen oder vorübergehend zu überschreiben und anschließend wiederherzustellen. Sie gibt immer einen numerischen Wert zurück; für textuelle Attribute existiert numfmt_get_text_attribute().

Parameter

Name Typ Default Beschreibung
$formatter Pflicht NumberFormatter Das NumberFormatter-Objekt, das zuvor z. B. mit numfmt_create() erstellt wurde.
$attribute Pflicht int Die Attributkonstante, deren Wert abgefragt werden soll, z. B. NumberFormatter::MAX_FRACTION_DIGITS, NumberFormatter::ROUNDING_MODE oder NumberFormatter::GROUPING_SIZE.

Rückgabewert

Typ
int|float|false
Beschreibung
Gibt den aktuellen Wert des angegebenen Attributs als int oder float zurück. Bei einem Fehler (z. B. ungültiges Attribut) wird false zurückgegeben.

Beispiele

Maximale Nachkommastellen eines Formatierungsobjekts auslesen

<?php
$formatter = numfmt_create('de_DE', NumberFormatter::DECIMAL);

// Maximale Nachkommastellen auslesen
$maxFraction = numfmt_get_attribute($formatter, NumberFormatter::MAX_FRACTION_DIGITS);
echo 'Maximale Nachkommastellen: ' . $maxFraction . PHP_EOL;

// Neue Anzahl setzen
numfmt_set_attribute($formatter, NumberFormatter::MAX_FRACTION_DIGITS, 2);

// Erneut auslesen zur Bestätigung
$maxFraction = numfmt_get_attribute($formatter, NumberFormatter::MAX_FRACTION_DIGITS);
echo 'Neue maximale Nachkommastellen: ' . $maxFraction . PHP_EOL;

echo numfmt_format($formatter, 1234.5678) . PHP_EOL;
Maximale Nachkommastellen: 6 Neue maximale Nachkommastellen: 2 1.234,57

Rundungsmodus und Gruppierungsgröße abfragen

<?php
$formatter = numfmt_create('en_US', NumberFormatter::DECIMAL);

$roundingMode = numfmt_get_attribute($formatter, NumberFormatter::ROUNDING_MODE);
$groupingSize = numfmt_get_attribute($formatter, NumberFormatter::GROUPING_SIZE);

$roundingNames = [
    NumberFormatter::ROUND_CEILING  => 'CEILING',
    NumberFormatter::ROUND_FLOOR    => 'FLOOR',
    NumberFormatter::ROUND_DOWN     => 'DOWN',
    NumberFormatter::ROUND_UP       => 'UP',
    NumberFormatter::ROUND_HALFEVEN => 'HALFEVEN',
    NumberFormatter::ROUND_HALFDOWN => 'HALFDOWN',
    NumberFormatter::ROUND_HALFUP   => 'HALFUP',
];

echo 'Rundungsmodus: ' . ($roundingNames[$roundingMode] ?? $roundingMode) . PHP_EOL;
echo 'Gruppierungsgröße: ' . $groupingSize . PHP_EOL;
Rundungsmodus: HALFEVEN Gruppierungsgröße: 3

// Wichtig · Fallstricke

Nicht alle Attribute sind für jeden Formatter-Typ gültig. Bei einem ungültigen Attribut gibt die Funktion false zurück; mit numfmt_get_error_code() und numfmt_get_error_message() lässt sich der genaue Fehler ermitteln.

Für textbasierte Attribute (z. B. NumberFormatter::POSITIVE_PREFIX) muss stattdessen numfmt_get_text_attribute() verwendet werden — numfmt_get_attribute() liefert dort false.

Die Funktion setzt die Intl-Erweiterung voraus. Auf Systemen ohne diese Erweiterung steht weder numfmt_get_attribute() noch die Klasse NumberFormatter zur Verfügung.