【问题标题】:Is there a PHP function to format a currency amount in accounting format?是否有 PHP 函数以会计格式格式化货币金额?
【发布时间】:2009-10-26 16:18:30
【问题描述】:

我目前正在用 PHP 编写一份偶尔需要显示负货币金额的报告。所述货币金额存储在数据库中,如“-44.00”。理想情况下,该数字将在报告中输出为“($44.00)”。

我知道我可以编写一些半复杂的函数来检测数字是否为负并手动插入括号,但我想知道在我重新发明轮子之前是否有一些方便的 PHP 函数可以为我做到这一点.我四处搜寻并没有找到任何似乎可以完成这项任务的东西。我知道money_format,但我没有看到任何方法来做否定/括号部分。请记住,无论数字是负数还是正数,代码都必须起作用。

【问题讨论】:

    标签: php currency string-formatting


    【解决方案1】:

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

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

    【讨论】:

    • 在尝试这个时,它不会添加美元符号。我已经阅读了 money_format 的文档,但仍然没有看到添加美元符号的方法。
    • 为澄清起见,如果我在 paymentamount 为 100 时调用“money_format('%(n', $row['paymentamount'])”,它会返回 (100.00)
    • @DWilliams,您可以轻松编写自己的 print_money_format($amount)。 PHP 是一种国际语言并支持多种货币,如果它默认打印 $ 会有点傻,通过让你指定货币符号来要求另一个参数(并破坏现有实现)更愚蠢:)
    • @tinkertim 我认为这就是 setlocale 的用途......设置货币。说它应该在 php.net 上添加 $,但我无法让它这样做。不知道这笔交易是什么。
    • %n 是控制是否显示货币符号的标志。也许确保您的应用正在设置语言环境?
    【解决方案2】:
    function format_currency($amount) {
        if($amount < 0)
            return "($".$amount.")";
    
        else return "$".$amount;
    }
    

    【讨论】:

      【解决方案3】:

      嗯,有点……但是当它是负数时,它仍然会输出减号。我会将该功能更改为:

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

      注意金额周围的 abs() 是括号已经输出了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-26
        • 1970-01-01
        • 2020-10-25
        • 2016-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多