-3

我正在尝试制作拳击模块。我有这样的数据。

RATIO  
S:1  M:2  L:2 XL:1 

情况1:

   
颜色 尺寸                 
         S、M、L、XL    
红 10 20 20 8   
蓝色 5 10 10 5
白色 10 30 20 10

现在如果我设置 box qty = 30 那么我希望得到

box_no, 颜色 S, M, L, XL  
1 红 5、10、10、5

2 红 5、10、10、3
2 蓝色 0, 0, 0, 2     

3 蓝色 5、10、10、3
3 白色 0, 0, 0, 2

4 白色 5、10、10、5
5 白色 5, 10, 10, 5
6 白色 0, 10, 0, 0

案例二:

   
颜色 尺寸                 
         S、M、L、XL    
红色 1 2 2 2   
蓝色 1 2 2 1
白色 1 3 2 1

现在如果我设置 box qty = 30 那么我希望将所有东西都放在 1 个盒子里

box_no, 颜色 S, M, L, XL  
1 红 1 2 2 2   
1 蓝色 1 2 2 1
1 白色 1 3 2 1

我如何用 php 实现这一点?

我不是在问整个工作代码。我被卡住了,花了几个小时没有任何进展。请帮助我如何开始或指导?

4

2 回答 2

2

您的比率目前是一个计数。把它变成一个适当的比例。

  • 首先将计数相加(1+2+2+1=6)
  • 将每个尺寸计数除以总和,得到 1/6、2/6、2/6、1/6。
  • 然后在填充输出列表时将它们乘以 *30。
  • 从可用性数字中减去。
于 2013-01-24T02:35:13.037 回答
0

我没有声明/初始化所有变量,也不关心格式,但这是我的想法:

//Sum ratios
$ratioSum = $s + $m + $l +xl;

//Count how many slots a box should have (acorrding to the smalest piece)
$boxSlotCount = $qty/$ratioSum;

//Count the size of each box bins in slots according to ratio
$binS = $s * $boxSlotCount;
$binM = $m * $boxSlotCount;
$binL = $l * $boxSlotCount;
$binXL = $xl * $boxSlotCount;

//Loop while we have items in any of the big boxes.
$i = 1;
while ($S>0 || $M>0 || $L>0 || $XL>0)
{
   echo $i;
   //If the big boxes are hold more items than a little box bin can
   //Than write the max size of a box bin
   //Otherwise write the amount of items in the big box
   echo ($S-$binS>0) ? $binS : $S;
   echo ($M-$binM>0) ? $binM : $M;
   echo ($L-$binL>0) ? $binL : $L;
   echo ($XL-$binXL>0) ? $binXL : $XL;

   //Subtract the items we put from the big boxes to the little ones
   $S -= $binS;
   $M -= $binM;
   $L -= $binL;
   $XL -= $binXL;
   $i++;
}
于 2013-01-24T03:13:22.913 回答