编程之梯度计算价格

11 篇文章 0 订阅

订单价格总额:

区间 区间内单价

1 ~ 5 => 30,

6 ~ 20 => 15,

21 ~ 50 => 10,

51 ~ 100 => 9,

101 ~ 200 => 8,

201 ~ 500 => 7,

501 ~ 1000 => 6,

1001 ~ => 5

<?php

# 价格规则, key 为区间段长度,value为价格区间内的单价
$rule = [
      5    => 30,
      20   => 15,
      50   => 10,
      100  => 9,
      200  => 8,
      500  => 7,
      1000 => 6,
      2000 => 5,
      3000 => 4,
      4000 => 3,
      5000 => 2,
      6000 => 1
];
# 阶梯移除的部分价格设置
$rule_yichu = 1;
function fee($rule=[], $rule_yichu, $order=0){
      if($order <= 0 ){
            return 0;
      }
      $sum = 0;
      $last = $order;
      foreach($rule as $key=>$val){
            if($last - $key >= 0){
                  $sum += $key * $val;
            } else {
                  $sum += $last * $val;
                  break;
            }
            $last = $last - $key;
      }
      if($last > 0){
        $sum += $last * $rule_yichu;
      }
      return $sum;
}

for($i=1; $i<101; $i++){
      echo $i,'---',fee($rule, $rule_yichu ,$i).PHP_EOL;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值