Signatur
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
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;
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;
// 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.