代码之家  ›  专栏  ›  技术社区  ›  Industrial

PHP:计算数组值之间的差异?

  •  1
  • Industrial  · 技术社区  · 15 年前

    我正在做一个定价估计器,它是 based on the following array :

    $items = 7;
    
    $margins = array(
       1 => 140, // Base price
       3 => 120,
       5 => 100,
      10 => 60);
    

    通过运行下面的行,我得到 最近的 价值:

    $margin = $margins[max(array_intersect(array_keys($margins),range(0, $items)))];
    
    echo $margin; // Outputs 100'
    

    但是,如果这个函数在一个数组上运行,每个值之间有很大的空间,那么最近的值将与以前的值相差很远,从而导致的价格可能会让客户感到难过。。。

    我如何才能从中得到更精确的结果-比如说,如果我手动填充了边距数组中的空白,以覆盖所有潜在的项目数量(这肯定不是有效的)?

    谢谢

    2 回复  |  直到 9 年前
        1
  •  0
  •   alex    15 年前

    你可以得到所有数字的列表 range(1, 10) . 然后循环并填补空白:)

        2
  •  0
  •   Victor Nicollet    15 年前

    当你写作时 1 => 140, 3 => 120, 5 => 100, 10 => 60 我想你的意思是“在5到9之间,每件商品都要100美元”,所以 购买7件商品的价格为7x100=700 . 如果是这种情况,您只需遍历整个数组一次,就可以得到结果的每项价格:

    function get_price($prices,$real_qty) 
    {
      foreach ($prices as $qty => $price) 
        if ($qty <= $real_qty) $real_price = $price;
        else break;
      return $real_price * $real_qty;
    }
    

    如果价格按数量排序(使用 ksort ,例如)然后,此函数将返回所提供数量的总价,所做的工作很少:最坏情况下,它将查看price数组中的每个项目一次,并且该数组中可能只有十几个项目。

    另一方面,如果你认为购买7件商品的价格应该是700美元以外的价格,那么你必须解释它的价格和原因,因为从问题数据来看,这并不明显。

    推荐文章