我正在试着写一个航运计算器,到目前为止做得很好。输入是订单中的产品数组。我遇到的一个问题是,产品列表中有些产品的数量值大于1。由于计算器经常使用foreach
,因此最好将所有产品分开,而不是将数量值分开。是否有一种方法可以复制产品条目的次数与数量字段的值一样多,这样我就可以得到一个扩展数组?
一个更好的解决方案是使用for循环——如果你的代码确实需要你迭代X次,其中X是产品的数量。在没有看到代码的情况下,我只能猜测数据结构的模式,但是这段代码可以为您指出正确的解决方案:
foreach ($products as $product) {
$productId = $product["id"];
for ($i = 0; $i < $product["quantity"]; $i++) {
// your code here
}
}
我建议你不要像你在问题中概述的那样处理这个问题。创建一个新的数组来模拟for循环会浪费内存和CPU,而且可伸缩性更差。
如果不看你的代码很难回答,但是这能做到吗?
$products = array_merge($products, array_fill(0, $quantity, $product));