PHP将钱转换为字符串

时间:2014-06-25 17:56:15

标签: php

我有一段代码在我的页面上创建一个进度条,以显示用户在分配的金额上花了多少钱。

$roof = 75

$total = 275.00这很好用

$total = 1,202.00由于逗号

而中断
<div class="progress">
                 <div class="progress-bar <?php if($total > $roof) { echo 'progress-bar-danger'; } ?>" role="progressbar" aria-valuenow="<?php echo $total ; ?>" aria-valuemin="0" aria-valuemax="<?php echo $roof ; ?>" style="width: <?php echo $total ; ?>%;">$<?php echo $total ; ?> of $<?php echo $roof ; ?> cap</div>
              </div>

如何使用包含这些逗号的更高金额来正常使用此功能?

3 个答案:

答案 0 :(得分:2)

你不应该使用已经格式化的字符串做任何逻辑。保持$total一个干净的整数或浮点数,只在输出上添加小数点和千位分隔符。

PHP为此提供了有用的number_format()功能。

<?php
// Central function that is responsible to format currency
// values for display
function formatMoney($sum) {
    $formattedString = number_format($sum, 2, "." , ",");

    return $formattedString
}

$roof = 1000;
$total = 1202;
?>
<div>
    <?php
    // Format the number just for output:
    echo formatMoney($total);

    // $total remains a number:
    if ($total > $roof) {
        echo "warning";
    }
    ?>
</div>

使用此模式,您的业务逻辑将独立于向用户显示货币值的方式。否则,如果您决定稍后更改数字格式(例如,添加本地化时),则会遇到麻烦。

如果您无法访问$total的无格式值,则需要将其解析为数字:

// Remove thousands separator and parse into a Float value:
$total = floatval(str_replace(",", "", $formattedTotal));

现在,您可以再次将其用作数字,并将其用于$total > $roof等内容。

答案 1 :(得分:1)

使用echo number_format($ total),您不必自己格式化它。

答案 2 :(得分:0)

一种方式:

$total = str_replace(',', '', $total);