Mit der PHP-Funktion number_format lassen sich Werte einheitlich formatieren. Die erste Ziffer gibt an, wieviele Nachkommastellen gezeigt werden sollen, als zweites wird der Komma-Seperator angegeben und an dritter Stelle der Tausender-Seperator.
Um beispielsweise Preise in Euro oder Dollar sinnvoll formatiert auszugeben kann folgende Formatierung sinnvoll sein:
echo rtrim(rtrim(number_format($pop_density, 2, ',', ''), '0'), ',');
Ein Datenbankwert von „1000“ wird dann automatisch in „1.000,00“ formatiert.
Ich habe auf einer Website nun einen Wert „pop_desity“, der die Bevölkerungsdichte von Orten angibt. Je nachdem, welcher Ort gerade ausgegeben wird kann dieser Wert stark schwanken. Manchmal bewegt sich der Wert im fünfstelligen Bereich und es würde keinen Sinn mache, Nachkommawerte auszugeben. An anderen Orten der Welt ist die Bevölkerungsdichte so niedrig, dass ausschließlich Werte von unter 0 ausgegeben werden und eine Anzeige von drei Nachkommastellen sinnvoll ist.
Ich möchte nun, dass Nachkommastellen immer nur dann ausgegeben werden, wenn sie vorhanden sind. Es soll also nicht wie im obigen Beispiel beschrieben aus „1000“ der Anzeigewert „1.000,00“ bemacht werden, sondern „1.000“. Dennoch soll aber bei einem Wert „1,25“ die Nachkommastellen nicht weggekürzt werden.
Das lässt sich mit der PHP-Funktion rtrim erreichen. Dabei wenden wir rtrim gleich zweimal an:
echo rtrim(rtrim(number_format($pop_density, 3, ',', '.'), '0'), ',');
Zunächst werden jedem Wert $pop_density drei Nachkommastellen zugestanden – egal, ob der Wert diese benötigt, oder nicht.
Dann werden über rtrim überflüssige Nullen vom Ende des Wertes entfernt – anschliessend mit dem zweien rtrim ein ggf. überflüssiges Kommazeichen.
Beispiele:
- Aus einem Wert „1200“ wird zunächst „1.200,000“ gemacht, dann werden die überflüssigen Nullen und das überflüssige Komma am Ende wieder entfernt, so dass „1.200“ ausgegeben wird.
- Aus einem Wert „5,5“ wird zunächst „5,500“ gemacht, dann werden die überflüssigen Nullen am Ende wieder entfernt – es wird „5,5“ ausgegeben.
- Aus einem Wert „0,01233333“ wird „0,012“ gemacht und entsprechend ausgegeben.
- Aus einem Wert „0,01266666“ wird „0,013“ gemacht und entsprechend ausgegeben – Werte werden korrekt gerundet.