【发布时间】:2020-12-28 08:27:32
【问题描述】:
我正在寻找您对实现此目的的最佳方法的个人想法,因为我认为有多种方法可以达到相同的目的。
我有一个店面,里面有多个不同的小册子,可以任意组合订购。
每个小册子项目在数据库中都有 L x W x H 和重量。它们的长 x 宽实际上都一样,只是厚度和重量不同。
我也设置了最大盒子尺寸。
我知道我可以将 10.5 的高度放入最大的盒子尺寸中。
不过,我可以合并这些书以进行运输。所以我想尽可能地把盒子填满,然后重复直到我只有一个部分的盒子。
我需要的最终结果是每个盒子及其重量的数组。
例子:
订购的物品
- 100 册,厚度为 0.05,重量为 0.15
- Book 2 的 200 个,厚度为 0.07,重量为 0.23
高度
- 100 * .05 = 5
- 200 * .07 = 14
权重
- 100 * .15 = 15
- 200 * .23 = 46
框 1 包含
- 第 2 册的 150
- 高度:150 * .07 = 10.5
- 重量:150 * .23 = 34.5
框 2 包含
- 第 2 册的 50 和第 1 册的 100
- 高度:(100 * .05) + (50 * .07) = 8.5
- 重量:(100 * .15) + (50 * .25) = 27.5
您将如何遍历信息以获取输出? 从一个产品开始,计算高度,将其分成完整的盒子,计算这些盒子的重量并将每个完整的盒子添加到数组中,获取部分盒子的高度并继续下一个产品?还是……??
静态编码会“简单”,但我正在尝试动态编码,这样我就不必每次添加新产品时都回来。
-编辑-
这是我当前的循环,但这只是总计数量并分成盒子。目前的产品都是相同的尺寸/形状,所以这很好用。
if($zip_code != '')
{
my $item_list = enc_sql_select_multi("SELECT * FROM `$PREF{shopping_carts_table}` WHERE `cart_id` = '$cart_id' AND `sold` = '0' AND `deleted_from_cart` = '0'");
my $item_qty = '0';
foreach my $k (sort { $a <=> $b } keys %$item_list)
{
$item_qty =~ s/,//g;
my $item_id = $$item_list{$k}{id};
my $item_qty_new = $$item_list{$k}{option1value};
$item_qty_new =~ s/,//g;
$item_qty = $item_qty + $item_qty_new;
}
if ($item_qty != '0')
{
$item_qty =~ s/,//g;
if ( $item_qty == 25 )
{
my $tempCount = $carton_specs{25}{boxNo};
$tempCount++;
$carton_specs{25}{boxNo} = $tempCount;
}
elsif ( $item_qty == 50 )
{
my $tempCount = $carton_specs{50}{boxNo};
$tempCount++;
$carton_specs{50}{boxNo} = $tempCount;
}
elsif ( $item_qty == 100 )
{
my $tempCount = $carton_specs{100}{boxNo};
$tempCount++;
$carton_specs{100}{boxNo} = $tempCount;
}
elsif ($item_qty > 100 && $item_qty < 5000)
{
my $fullBoxCt = int($item_qty / 200);
my $tempCountFull = $carton_specs{200}{boxNo};
$tempCountFull = $tempCountFull + $fullBoxCt;
$carton_specs{200}{boxNo} = $tempCountFull;
my $partBoxQty = $item_qty - (200 * $fullBoxCt);
if ($partBoxQty != 0)
{
my $tempCountPart = $carton_specs{$partBoxQty}{boxNo};
$tempCountPart++;
$carton_specs{$partBoxQty}{boxNo} = $tempCountPart;
}
}
else
{
@shipDetails =
(
{
Code => 1000,
Price => '0.00'
},
{
Code => 1500,
Price => '0.00'
}
);
return (@shipDetails);
}
}
【问题讨论】:
标签: javascript arrays web foreach cgi