什么时候如何将一个数组分为两个或多个几乎相等的数组?

时间:2019-04-28 12:25:58

标签: php mysql laravel

  • 如果订单中所有项目的成本均超过$ 250,请将这些项目拆分为多个 包,否则一个包就足够了。
  • 如果将相同顺序的物品分成多个包装,则包装的重量 应该在包裹上平均分配以节省快递费用。
  • 在拆分时,没有包装的总价等于或高于$ 250

    名称价格($)重量(g)

  • List item

我在遵循逻辑方面做了很多工作,但是没有实现。请帮助我提前解决此问题

我尝试使用以下代码,能够根据重量确定代码,但涉及价格逻辑时会失败。

$in = array(10=>200, 30=>300, 200=>10, 20=>500, 40=>10, 100=>20);
function devideArray($in){

// Sort array decreasing
arsort($in, SORT_NUMERIC);

// Start with two empty arrays
$arr1 = $arr2 = array();

// Put the next value in the array in the array with the lowest sum
foreach ($in as  $k=>$value){
   // echo $k."===".$value; echo "<br>";
  if (array_sum($arr2) > array_sum($arr1)) $arr1[$k] = $value; else $arr2[$k] = $value;

}
// Wrap in array (as in question)
$out = array($arr1,$arr2);
return $out;
}
$array = devideArray($in);
echo "<pre>";print_r($array);echo "</pre>";

包裹1

项目-项目1,项目3,项目7 总重量-510克 总价-$ 240

包裹2

项目-项目4,项目6,项目2 总重量-530克 总价-$ 160 快递价格-$ 15

0 个答案:

没有答案