いくつかのコスト情報を調べていて、すべての組み合わせを表示する適切な方法が必要です。ネストされたforeach
ループなどを使用する必要があるかどうかはわかりません。
私は25種類のアイテムを持っています。item1 - item2 .. item 25
アイテムの構築に使用するボルトが 6 本あります。ボルト1 -ボルト2 -ボルト3 -ボルト4 -ボルト5 -ボルト6各ボルトのコストは異なります。
すべてのアイテムで使用できるボルトは1種類のみです。ボルト 1 の 3 とボルト 2 の 3 のような混合物ではありません。
- 25 項目中 7 項目で 6 本のボルトが必要です。
- 残りの 6 つには 5 本のボルトが必要です。
- 残りの 3 つには 4 つのボルトが必要です。
- 残りの 5 つには 3 つのボルトが必要です。
- 残りの 3 つには 2 つのボルトが必要です。
- 最後の 1 つには 1 つのボルトが必要です。
ここがややこしいところです。
ボルトの数を持つ各アイテムには、異なるコストを持つ 4 つのアクセサリ パックのいずれかが必要です。
acc1 - acc2 - acc3 - acc4
各アイテムには、4 つのボックス スタッファーのうちの 1 つが必要です。それぞれ、異なるコストで
スタッフィー1 -スタッフィー3 -スタッフィー3 -スタッフィー4
最後に、各アイテムには 3 つのラッパーのいずれかが必要です。それぞれ、異なるコストで。
ラッパー1 -ラッパー2 -ラッパー3
たとえば、考えられるすべての価格の組み合わせを提供するには、PHP が必要です。
foreach 6 bolt item{
(6 bolt1 * $cost) + ($acc1Cost + $stuffer1Cost + $wrapper1Cost) = item1acc1stff1wra1COST
(6 bolt1 * $cost) + ($acc2Cost + $stuffer1Cost + $wrapper1Cost) = item1acc2stff1wra1COST
(6 bolt1 * $cost) + ($acc3Cost + $stuffer1Cost + $wrapper1Cost) ..
(6 bolt1 * $cost) + ($acc4Cost + $stuffer1Cost + $wrapper1Cost) ..
(6 bolt1 * $cost) + ($acc1Cost + $stuffer2Cost + $wrapper1Cost) ..
(6 bolt1 * $cost) + ($acc1Cost + $stuffer3Cost + $wrapper1Cost)
(6 bolt1 * $cost) + ($acc1Cost + $stuffer4Cost + $wrapper1Cost)
(6 bolt1 * $cost) + ($acc1Cost + $stuffer1Cost + $wrapper2Cost)
(6 bolt1 * $cost) + ($acc1Cost + $stuffer1Cost + $wrapper3Cost)
(6 bolt2 * $cost) + ($acc1Cost + $stuffer1Cost + $wrapper3Cost)
(6 bolt2 * $cost) + ($acc1Cost + $stuffer1Cost + $wrapper3Cost)
..... all combinations
foreach 5 bolt item{
(5 bolts * $cost) + (**$acc1Cost** + **$stuffer1Cost** **$wrapper1Cost**)
(5 bolts * $cost) + (**$acc2Cost** + **$stuffer1Cost** **$wrapper1Cost**)
(5 bolts * $cost) + (**$acc3Cost** + **$stuffer1Cost** **$wrapper1Cost**)
(5 bolts * $cost) + (**$acc4Cost** + **$stuffer1Cost** **$wrapper1Cost**)
..so on to the end..
}
各タイプのアイテムは、必要なボルトの数によって分割された異なる配列に分類されます。
$oneBolt = array(
bolt1 => cost,
...
);
他の各アイテム グループは、それぞれの価格配列に保持されます。
上記のようにすべての組み合わせを書き出すことができることはわかっていますが、ループでこれを行うにはどうすればよいですか? 何らかの方法でそれを行うのは賢明ですか?PHPには、このようなもののための組み込み関数がありますか? どうぞ、あなたが提供できる洞察をいただければ幸いです。これを行うべき別の方法はありますか?