-3

我正在尝试创建一个简单的脚本来添加到我的 html 网站。

我需要它根据用户输入的数量计算价格。

例如,1-1000 的值将乘以 1.50 并显示,1001-5000 乘以 1.20 并显示,5001-10000 乘以 1 并显示,任何高于该值的数字都会显示错误消息,例如“必须低于 10000 ”。

我一直在尝试在 php 中执行此操作,但没有成功。

4

4 回答 4

1

您可能会发现 operator switch 非常有用(PHP 中的 Switch)。像这样的东西:

...
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 是它的通用名称,它是 $limits)之后仍然存储数组中的最后一项。看看括号。

于 2013-11-03T11:11:07.063 回答
1

您可以使用ifto 检查 Vault 并显示计算值:

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";
}
于 2013-11-03T11:01:03.973 回答
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"));
    }
}
于 2013-11-03T11:07:13.330 回答
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;
    }
});

小提琴

于 2013-11-03T11:14:21.560 回答