我正在查看一些成本信息,我需要一種顯示所有組合的好方法。我不確定是否必須使用嵌套的foreach
循環或其他。通過一組數據的最佳方法
我有25個不同的項目。 物品1 - ITEM2 .. 項目25
我有一個在我的項目建設使用了6個螺栓。 bolt1 - bolt2 - bolt3 - bolt4 - bolt5 - bolt6每個螺栓具有不同的成本。
所有項目只能使用一個類型的螺栓。不是混合物,像3號螺栓1和3號螺栓。
- 25件物品中的7件需要6個螺栓。
- 其餘6個需要5個螺栓。
- 其餘3個需要4個螺栓。
- 其餘5個需要3個螺栓。
- 其餘3個需要2個螺栓。
- 最後1個需要1個螺栓。
這裏是棘手的地方。
每個項目與他們的螺栓數量需要4個附件包中的一個具有不同的成本。
ACC1 - ACC2 - ACC3 - ACC4
每個項目也需要4盒填充之一。每次,具有不同的成本
stuffer1 - stuffer3 - stuffer3 - stuffer4
最後,每個項目需要3個包裝之一。每個都有不同的成本。
wrapper1 - wrapper2 - wrapper3
我需要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是否有這樣的內置函數?請,任何洞察力,你可以提供表示讚賞。還有另外一種方法我應該這樣做嗎?
我可能需要指出的是,價格被拉到另一個網站的捲曲刮。目標是找到價格最低的組合以觸發另一個步驟,那就是需求的程度。我不知道這是否會改變你的答案,但我認爲這是相關的。我正在研究MVC的東西,但我不確定。 – KiloJKilo 2012-08-11 23:29:50
我已經發布了一個替代答案,只使用數組。看看它是否符合你的想法。 – pixeline 2012-08-11 23:44:40