根据间隔计算价格

时间:2014-07-11 08:58:28

标签: php math

代码必须是PHP,这怎么可能?

我想根据这些原则计算价格:

0-50 = 3 pr单位。
50-100 = 2.5 pr单位。
100-150 = 2 pr单位。
150 + = 1.5 pr单位。

例如,125个单位的订单将花费:

(50 * 3) + (50 * 2,5) + (25 * 2) = 325

我认为这可以通过while循环完成,或者可能有一些功能可以更轻松地完成它?

2 个答案:

答案 0 :(得分:0)

方法1:您可以进行循环并检查数字是否小于或大于值(50,100 ...)以设置单价。

$value = 1000;
echo getPrice($value);

function getPrice($value)
{
    $price = 0;
    $prices = array(3,2.5,2,1.5);

    for ( $i = 1 ; $i <= $value ; $i++ )
    {
        if ( $i < 50 ) $price += $prices[0];
        else if ( $i < 100 ) $price += $prices[1];
        else if ( $i < 150 ) $price += $prices[2];
        else $price += $prices[3];
    }

    return $price;    
}

方法2:您可以计算每个价格区间。

$value = 1000;
echo getPrice($value);

function getPrice($value)
{
    $price = 0;
    $prices = array(3,2.5,2,1.5);

    if ( $value > 150 )
        return $prices[0] * 50 + $prices[1] * 50 + $prices[2] * 50 + ( $value - 150 ) * $prices[3];

    if ( $value > 100 )
        return $prices[0] * 50 + $prices[1] * 50 + ( $value - 100 ) * $prices[2];

    if ( $value > 50 )
        return $prices[0] * 50 + ( $value - 50 ) * $prices[1];

    return $value * $prices[0]; 
}

答案 1 :(得分:0)

function calculatePrice($numberOfUnits) {
    // Initialise price
    $price = 0;

    // Prices: amount for category => price for category
    // Starts with largest category
    $prices = array(150 => 1.5, 100 => 2, 50 => 2.5, 0 => 3);

    // Loop over price categories
    foreach($prices as $categoryAmount => $categoryPrice) {

        // Calculate the numbers that fall into the category
        $amount = $numberOfUnits - $categoryAmount;

        // If units fall into the category, add to the price
        // and calculate remaining units
        if($amount > 0) {
            $price += $amount*$categoryPrice;
            $numberOfUnits -= $amount;
        }
    }

    // Return the total price
    return $price;
}

您可以在行动here中看到它。