我正在尝试创建一个简单的脚本来添加到我的html网站。
我需要它根据用户输入的数量来计算价格。
例如,值1-1000将乘以1.50并显示,1001-5000乘以1.20并显示,5001-10000乘以1并显示,任何数字将显示错误消息,如“必须”低于10000“。
我一直试图在php中做到这一点但没有成功。
答案 0 :(得分:1)
您可以使用if
检查保险库并显示计算值:
if($input <= 1000)
{
echo $input * 1.5;
}
elseif($input <= 5000)
{
echo $input * 1.2;
}
elseif($input <= 10000)
{
echo $input;
}
else
{
echo "Must be below 10000";
}
答案 1 :(得分:1)
您可能会发现操作员切换非常有用(Switch in PHP)。像这样:
...
switch ($quantity) {
case (($quantity >= 1) && ($quantity <= 1000)):
$multiplicator = 1.5;
echo $quantity * $multiplicator;
break;
case (($quantity >= 1001) && ($quantity <= 5000)):
$multiplicator = 1.2;
echo $quantity * $multiplicator;
break;
case (($quantity >= 5001) && ($quantity <= 10000)):
$multiplicator = 1.2;
echo $quantity * $multiplicator;
break;
case ($quantity > 10000):
echo 'Quantity must be less then 10000!';
break;
}
....
编辑:使用循环的另一个选项:
...
$limits_array = array(
0 => array(
'min' => 1,
'max' => 1000,
'mul' => 1.5,
),
1 => array(
'min' => 1001,
'max' => 5000,
'mul' => 1.2,
),
2 => array(
'min' => 5001,
'max' => 10000,
'mul' => 1,
),
);
foreach ($limits_array as $limits)
if (($quantity >= $limits['min']) && ($quantity <= $limits['max']) {
echo $quantity * $limits['mul'];
break;
}
if ($quantity > $limits['max'])
echo 'Quantity must be less then 10000!';
...
请注意,在foreach最后一个值元素($ value是它的通用名称,它是$ limit)之后,仍然存储数组中的最后一项。看看括号。
答案 2 :(得分:0)
我建议不要在IF语句中定义每个条件,而是为每个阶段定义常量:
<form action="" method="post">
<input type="text" name="qnt" />
<input type="submit" />
</form>
<?php
define('MIN_STAGE', 1);
define('MAX_STAGE', 3);
define('STAGE_1_MIN', 0);
define('STAGE_1_MAX', 1000);
define('STAGE_1_MULTIPLIER', 1.50);
define('STAGE_2_MIN', STAGE_1_MAX);
define('STAGE_2_MAX', 5000);
define('STAGE_2_MULTIPLIER', 1.20);
define('STAGE_3_MIN', STAGE_2_MAX);
define('STAGE_3_MAX', 10000);
define('STAGE_3_MULTIPLIER', 1);
for($i = MIN_STAGE; $i <= MAX_STAGE; $i++) {
if ($_POST['qnt'] > constant("STAGE_".$i."_MIN") && $_POST['qnt'] <= constant("STAGE_".$i."_MAX")) {
echo $_POST['qnt'] * constant("STAGE_".$i."_MULTIPLIER");
}
elseif ($_POST['qnt'] < constant("STAGE_".MIN_STAGE."_MIN") || $_POST['qnt'] > constant("STAGE_".MAX_STAGE."_MAX")) {
die ('Must be between ' . constant("STAGE_".MIN_STAGE."_MIN") . ' AND ' . constant("STAGE_".MAX_STAGE."_MAX"));
}
}
答案 3 :(得分:0)
如果你想在纯PHP中使用它 - 那不太好。对于许多重新加载,但在这里如何工作(这是一个糟糕的代码,坏主意):
<?php
$price = 10;
if(isset($_REQUEST['count']){
$count = (int)$count;
if($count > 10000){
echo 'Must be below 10000';
}
elseif($count >= 1 && $count <= 1000){
$price *= 1.2;
}
//Etc...
$total = $price * $count;
}
在我看来,你应该尝试使用JS实现它(或者更简单 - 使用jQuery)。 首先,创建一个表单:
<input type="text" id="count" />
<input type="button" id="calculate" value="Calculate" />
然后做这样的事情:
$(function(){
var price = 10;
var multiplier = 1;
$('#calculate').click(function(){
var count = parseInt($('#count').val());
if(count > 10000){
alert('Must be below 10000');
return;
}
else if(count >= 1 && count <= 1000){
multiplier = 1.2;
}
alert('Current price is ' + price + ' * ' + multiplier + ' = ' + getActualPrice());
});
function getActualPrice(){
return price * multiplier;
}
});