如何根据数量值在产品列表数组中复制产品


PHP - How to duplicate products in a product list array depending on quantity value

我正在试着写一个航运计算器,到目前为止做得很好。输入是订单中的产品数组。我遇到的一个问题是,产品列表中有些产品的数量值大于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));