Je ne pense pas que ce soit possible de le réaliser en modifiant le motif. Je veux dire, vous pouvez vérifier si le numéro fourni est de type float
ou int
. Si c'est int
vous pouvez définir un modèle différent, mais il existe un moyen plus simple (plus recommandé façon IMO).
Le 3ème argument de la méthode __invoke()
est $showDecimal
. Cela prend une valeur booléenne. Si vous voulez que les décimales soient visibles, passez true
(sa valeur par défaut), false
sinon.
Exemple
true
- si le nombre est un nombre entier
<?php echo $this->currencyFormat(1234, "EUR", true, "de_DE"); ?>
sortie:
1.234,00 €
false
- si le numéro est flotter
<?php echo $this->currencyFormat(1234, "EUR", false, "de_DE"); ?>
Sortie:
1.234 €
exemple boucle
// $prices = [1234, 1234.23, 234, 3456.54]
<?php foreach($prices as $price): ?>
<?php $showDecimal = is_float($price) ? true : false;
<p><?php echo $this->currencyFormat(1234, "EUR", $showDecimal, "de_DE"); ?></p>
<?php endforeach; ?>
mondial
Si pour une raison quelconque, vous voulez cacher des nombres décimaux pour toutes les monnaies/formats, vous pouvez utiliser setShouldShowDecimals()
méthode :
$this->plugin("currencyformat")->setShouldShowDecimals(false)->setCurrencyCode("USD")->setLocale("en_US");
echo $this->currencyFormat(1234.00); // "$1,234"
Voici une liste de tous les symboles disponibles pour le motif http://www.icu-project.org/apiref/icu4c/classDecimalFormat.html#details
Merci pour votre réponse. J'ai déjà fait quelques tests avec le paramètre '$ showDecimal', mais malheureusement, ce n'est qu'un" off-for-all-cases "ou" on-for-all-cases ". En ce moment, je remplace la chaîne ", 00" avec une chaîne vide. Pas sympa mais au moins ça marche. – acme
J'ai modifié mon message. Je ne sais pas à quoi ressemblent vos données, mais ne pouvez-vous pas vérifier si le nombre a des décimales comme dans mon "exemple de boucle"? Je pense qu'il serait plus élégant d'utiliser alors 'str_replace' – SzymonM
Le prix est défini en unités mineures (par exemple 123456 est 1234,56 $ à la fin). Donc je suppose que la seule façon est de vérifier si elle se termine par "00" et de mettre '$ showDecimal' en conséquence ou juste de remplacer" .00 "par une chaîne vide à la fin. – acme