Php 如何将用户输入的百分比转换为十进制以及如何输出
我是php新手,所以如果你对我的问题没有耐心,我理解没有必要粗鲁,请忽略我的帖子谢谢 我正在尝试制作一个表单,其中用户输入价格和折扣百分比,以便查看销售价格,这是我到目前为止得到的:Php 如何将用户输入的百分比转换为十进制以及如何输出,php,Php,我是php新手,所以如果你对我的问题没有耐心,我理解没有必要粗鲁,请忽略我的帖子谢谢 我正在尝试制作一个表单,其中用户输入价格和折扣百分比,以便查看销售价格,这是我到目前为止得到的: <?php $ogprice= $_POST['price']; $discountper= $_POST['discount']; function discountCalculations () { $saleprice = $ogprice - ($ogprice * ($discountp
<?php
$ogprice= $_POST['price'];
$discountper= $_POST['discount'];
function discountCalculations () {
$saleprice = $ogprice - ($ogprice * ($discountper / 100));
return $saleprice;
}
?>
<html>
<title>Discount Calculator </title>
<body>
<h1>Discount Calculator</h1>
<form name="discountCalculator" action="functions.php" method="post">
<input type="text" name="price" placeholder="Original Price" ><br>
<input type="text" name="discount" placeholder="Discount" ><br>
<input type="submit" value="Calculate values"/>
</form>
<?php
echo discountCalculations ();
?>
</body>
</html>
折扣计算器
折扣计算器
以下html在单独的文件中包含php函数。将您的php移动到一个单独的文件中,其中包含welcome_get.php(为您的流程重命名),并将此示例从w3schools修改为您的输入和输出
<!DOCTYPE HTML>
<html>
<body>
<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
名称:
电子邮件:
函数
discountCalculations()
返回所有输入的0
,因为变量$ogprice
和$discountper
未初始化(它们在使用时实际上不存在)
PHP实际上是通过一个通知告诉您这一点:
PHP注意:未定义变量:折扣
但是,最有可能的是,您的PHP解释器(默认情况下)配置为忽略通知。(这是错误的,但这是一个不同的主题。)
在PHP中有两个变量作用域:局部作用域(属于每个函数,只有该函数的代码才能访问它)和全局作用域。
与其他可以从任何地方访问全局范围的语言不同,在PHP中,默认情况下只能从全局代码访问全局范围。这是任何函数或类方法之外的代码 台词:
$ogprice = $_POST['price'];
$discountper = $_POST['discount'];
在全局范围内创建变量$ogprice
和$discountper
(因为它们在任何函数之外)。默认情况下,函数
discountCalculations()
的代码无法查看全局变量$ogprice
和$discountper
。到达线路时:
$saleprice = $ogprice - ($ogprice * ($discountper / 100));
函数的本地范围中不存在变量$ogprice
和$discountper
。PHP显示了三条关于它们的通知(每使用一个未定义变量一条),并使用NULL
。当在数值上下文中使用时,NULL
被转换为数字0
,计算结果相当于:
$saleprice = 0 - (0 * (0 / 100));
显然,结果总是0
函数可以访问全局范围,但我不会告诉您如何访问。使用全局变量在任何语言中都是不好的做法 相反,我建议您让函数接受要使用的值作为参数:
function discountCalculations ($price, $discount) {
$saleprice = $price - ($price * ($discount / 100));
return $saleprice;
}
现在,$price
和$discount
是函数的参数。函数参数属于函数的本地范围,但它们使用用于调用函数的值进行初始化:
$ogprice = $_POST['price'];
$discountper = $_POST['discount'];
echo discountCalculations($ogprice, $discountper);
通过这种方式,您可以使用不同的值重用函数,并且它没有隐藏的依赖项。对于任何阅读代码的人来说,很明显函数需要两个值来完成它的工作
阅读PHP文档中的更多信息。
(然后忘记你在那页上读到的关于
global
关键字的任何内容,因为它对你的代码和编码风格弊大于利:-)
另外,请阅读PHP中的各种错误级别,并在PHP.ini
或代码中使用以启用所有错误的报告
许多注意事项(如“未定义变量”或“未定义数组索引”)不仅仅是一些可以忽略的小问题,而是真正的编码错误。PHP仍然将它们作为次要的处理方式,但自8.0版以来,它将更加严肃和有效地处理它们。事实上,它们是真正的错误,但将它们报告为错误将破坏自PHP发布以来的过去20年中积累的大量编写糟糕的PHP代码。除以100…它以字符串形式出现。在其上打上一个“0.”,然后将其强制转换为(浮点)或(双精度)。尝试使用php ex.number_格式的user number_format()($discountper,2,“,”);问题是关于一些不能正常工作的代码。代码在哪里?问题在于输入如何在php处理后输出。这段代码是一个输入php进程输出的例子。除了你的答案中没有PHP代码的痕迹之外:-我是说问题不在于代码,而是PHP需要在一个单独的文件中,这是一个la ajax体系结构,如果不将PHP与客户端分离,客户端就不能在服务器上显示“处理过的数据”。我更新了我的答案,使之更加清晰。除非使用ajax架构,否则不能在同一个文件中执行POST调用和HTML客户端。
$ogprice = $_POST['price'];
$discountper = $_POST['discount'];
echo discountCalculations($ogprice, $discountper);