如何比较多个数组,当ID相同时,删除该数组并将原始数组+1更新为PHP中的数量?

How to compare multiple arrays, when ID is the same, remove that array and update the original array with +1 to quantity in PHP?

我正在尝试创建一个“购物车”页面来显示已添加到购物车中的产品。目前,我正在显示通过循环遍历一系列产品的 foreach 循环添加到购物车的任何内容。如果我再次添加相同的产品,它会显示两次。我想删除重复的产品并将数量字段更新为 1。

例如,产品数组如下所示...

[0] => Array
    (
        [product_id] => 222
        [quantity] => 1
    )

[1] => Array
    (
        [product_id] => 333
        [quantity] => 1
    )

[2] => Array
    (
        [product_id] => 222
        [quantity] => 1

    )

[3] => Array
    (
        [product_id] => 444
        [quantity] => 1
        
    )

[4] => Array
    (
        [product_id] => 222
        [quantity] => 1
        
    )

删除具有匹配产品 ID 的重复产品并将数量键更新为 1 的最佳方法是什么?因此产品 ID 222 的数量为 3。

使用关联数组非常简单:

$input = [
    [
        "product_id" => 222,
        "quantity" => 1
    ],
    [
        "product_id" => 333,
        "quantity" => 1
    ],
    [
        "product_id" => 222,
        "quantity" => 1

    ],
    [
        "product_id" => 444,
        "quantity" => 1
    ],
    [
        "product_id" => 222,
        "quantity" => 1
        
    ]
];

$output = [];

foreach($input as $row) {
    if (array_key_exists($row["product_id"], $output)) {
        $output[$row["product_id"]]["quantity"] += $row["quantity"];
    }
    else {
        $output[$row["product_id"]] = [
            "quantity" => $row["quantity"]
        ];
    }
}

var_dump($output);