Mit NumberFormatter::formatCurrency holt man sich noch eine Abhängigkeit vom Paket PHP Intl.
php.net/manual/de/book.intl.php
NumberFormatter::formatCurrency braucht den Parameter "currency", welcher der ISO 4217-Code als String ist.
de.wikipedia.org/wiki/ISO_4217
Das Währungssymbol ist auch nicht eindeutig, wie man z.B. an Dollar oder Kronen sieht (Norwegen und Schweden). Also müsste man dann schon den ISO-Code mit anzeigen, damit klar ist welche Währung gemeint ist.
USD ($)
SEK (kr)
<?php
// https://de.wikipedia.org/wiki/ISO_4217
$array = array(
// ISO-4217 => ISO 4217 Code und Symbol
"EUR" => "EUR (€)",
"USD" => "USD ($)",
"GBP" => "GBP (£)",
"SEK" => "SEK (kr)",
"NOK" => "NOK (kr)",
);
echo '<html><head><title>Test</title></head><body>';
echo '<select name="currency">';
foreach ($array as &$value) {
echo '<option>'.$value.'</option>';
}
echo '</select><br><br>';
echo 'Zuordnungen Wert (ISO 4217 Code und Symbol) zu Schlüssel (ISO 4217 Code): <br>';
echo 'SEK (kr) -> '.array_search('SEK (kr)', $array).'<br>';
echo 'NOK (kr) -> '.array_search('NOK (kr)', $array).'<br>';
echo 'USD ($) -> '.array_search('USD ($)', $array).'<br>';
echo '</body></html>';
?>
php.net/manual/de/function.array-search.php
Wenn man den ISO-Code nicht als Parameter für irgendwas gebraucht, kann man ja auch einfach die Auswahl der Währung abspeichern (z.B. "USD ($)") und diese immer nutzen, wenn in der Kasse ein Geldbetrag anzeigt wird. Die Zuordnung ISO-Code zu den Text den man später anzeigen will ist dann ja überflüssig.
<?php
// https://de.wikipedia.org/wiki/ISO_4217
$array = array(
// ISO 4217 Code und Symbol
"EUR (€)",
"USD ($)",
"GBP (£)",
"SEK (kr)",
"NOK (kr)",
);
echo '<html><head><title>Test</title></head><body>';
echo '<select name="currency">';
foreach ($array as &$value) {
echo '<option>'.$value.'</option>';
}
echo '</select></body></html>';
?>
Also wenn die Kasse in USD ($) wäre:
Zitat
Kontostand Gesamt: 10.00 USD ($)
Insgesamt eingezahlt: 10.00 USD ($)
Insgesamt ausgezahlt: 0 USD ($)
Balance total: 10.00 USD ($)
Total paid: 10.00 USD ($)
Total paid out: 0 USD ($)
Wenn man es furchtbar genau nimmt, müsste man ja sogar noch berücksichtigen ob die Währung vor oder nach der Zahl steht und ob Punkt oder Komma.
Zitat
UK: €12,345.68
DE: 12.345,68 €
akrabat.com/using-phps-numberformatter-to-format-currencies/