用PHP处理和添加表单提交的数字


Processing and adding number from a form submission in PHP

我制作了一个简单的PHP脚本,它有四个表单输入字段。这些字段将接收表示货币金额的数字。然后,这四个数字应该相加并显示为一个总数。

现在,我找不到一种方法来显示小数。

我使用的货币使用逗号(,)分隔小数,使用点(.)分隔千位。

这是我表单的HTML代码:

<form action="send.php" method="post">
<p>Amount 1:</p>
<p><input name="amount1" value=""></p>
<p>Amount 2:</p>
<p><input name="amount2" value=""></p>
<p>Amount 3:</p>
<p><input name="amount3"  value=""></p>
<p>Amount 4:</p>
<p><input name="amount4" value=""></p>
<p><input type='submit' name='submit' value='Submit'></p>
</form>

这是我处理的PHP代码:

<?php
//convert to float
$amount1 = (float)$_POST["amount1"];  // $amount1 = 250,50
$amount2 = (float)$_POST["amount2"];  // $amount2 = 100,25
$amount3 = (float)$_POST["amount3"];  // $amount3 = 300,99
$amount4 = (float)$_POST["amount4"];  // $amount4 = 10,50
echo $amount1; // prints 250
echo $amount2; // prints 100
echo $amount3; // prints 300
echo $amount4; // prints 10
//use number_format() to force comma as decimal and to use 2 decimal places
$total = number_format($amount1 + $amount2 + $amount3 + $amount4,2,",",".");
echo $total; //should print "662,24" , instead prints 662
?>

在添加数字之前,我也尝试过使用number_format(),但仍然不起作用。

此外,有没有什么方法可以强制逗号和点作为分隔符,而不必对每个数字都这样做?

试试这个,

//convert to float
$amount1 = floatval(str_replace(',', '.', $_POST["amount1"])); // $amount1 = 250,50
$amount2 = floatval(str_replace(',', '.', $_POST["amount2"])); // $amount2 = 100,25
$amount3 = floatval(str_replace(',', '.', $_POST["amount3"])); // $amount3 = 300,99
$amount4 = floatval(str_replace(',', '.', $_POST["amount4"])); // $amount4 = 10,50

PHP中的浮点值使用"."作为十进制分隔符。您需要将表单输入中的十进制分隔符","替换为"。"因此它们可以被正确地转换为浮点值。