2009-10-26 5 views
2

Je suis en train d'écrire un rapport en PHP qui doit parfois afficher des montants en devise négative. Les montants en devise sont stockés dans la base de données comme "-44.00". Idéalement, ce numéro devrait être «(44,00 $)» sur le rapport. Je sais que je peux écrire une fonction semi-compliquée pour détecter si le nombre est négatif et insérer manuellement la parenthèse, mais je me demandais s'il y avait une fonction PHP pratique qui peut le faire pour moi avant de réinventer la roue. J'ai cherché autour et n'ai rien trouvé qui semble faire cette tâche exacte. Je sais à propos de money_format, mais je ne vois aucun moyen de faire la partie négative/parenthèse. Gardez à l'esprit que le code doit fonctionner que le nombre soit négatif ou positif.Existe-t-il une fonction PHP pour formater un montant en devise dans un format de comptabilité?

Répondre

7

http://www.php.net/manual/en/function.money-format.php

echo money_format('%(n', '-44.00'); 
+0

En essayant cela, il n'ajoute pas le signe dollar. J'ai lu la documentation de money_format et je ne vois toujours pas comment ajouter le signe dollar. – DWilliams

+0

Pour plus de clarté, si j'appelle "money_format ('% (n', $ row ['paymentamount'])" quand paymentamount est 100, il renvoie (100.00) – DWilliams

+0

@DWilliams, vous pouvez écrire votre propre print_money_format ($ amount) plutôt PHP est une langue internationale et prend en charge de nombreuses devises, il serait stupide d'imprimer un $ par défaut, encore plus sillier d'exiger un autre argument (et de casser les implémentations existantes) en vous faisant spécifier le symbole monétaire :) –

1
function format_currency($amount) { 
    if($amount < 0) 
     return "($".$amount.")"; 

    else return "$".$amount; 
} 
0

Hmm sorte ... mais ce serait encore sortie le signe moins quand il est négatif. Je changerais cette fonction à quelque chose comme:

function accting_format($amount) { 
    if ($amount < 0) return '($' . abs($amount) . ')'; 
    return '$' . $amount; 
} 

Notez l'ABS() autour du montant est entre parenthèses ont déjà été émis.

Questions connexes