我有一段代码在我的页面上创建一个进度条,以显示用户在分配的金额上花了多少钱。
$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>
如何使用包含这些逗号的更高金额来正常使用此功能?
答案 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);