-3

ボクシングモジュールを作ろうとしています。私はこのようなデータを持っています。

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

ケース1:

   
カラーサイズ                 
         S、M、L、XL    
赤102020 8   
青510105
ホワイト10302010

ここで、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

ケース2:

   
カラーサイズ                 
         S、M、L、XL    
赤122 2   
ブルー122 1
ホワイト132 1

ここで、box qty = 30に設定すると、すべてが1つのボックスに収まると予想されます。

box_no、カラーS、M、L、XL  
1赤122 2   
1青122 1
1ホワイト132 1

PHPでこれを達成するにはどうすればよいですか?

私は完全に機能するコードを求めているのではありません。私は行き詰まり、何の進展もなく数時間過ごしました。plsは私に開始または指示する方法を助けますか?

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 に答える