笨。如何检查嵌套数组中的重复项并在存在重复项时更新它?

时间:2017-02-15 15:06:57

标签: php arrays codeigniter

如何检查嵌套数组是否包含重复项?如果它确实包含重复,那么如何更新它?

示例

Array
(

[0] => Array
    (
        [pre_order_id] => 10
        [product_id] => 1
        [product_quantity] => 11
        [product_unit_id] => 2
        [storage_location_id] => 1
        [price] => 1111
    )

    [1] => Array
        (
            [pre_order_id] => 10
            [product_id] => 1
            [product_quantity] => 11
            [product_unit_id] => 2
            [storage_location_id] => 1
            [price] => 1111
        )

    [2] => Array
        (
            [pre_order_id] => 10
            [product_id] => 3
            [product_quantity] => 11
            [product_unit_id] => 2
            [storage_location_id] => 1
            [price] => 1111
        )
)

此处 product_id 有两次重复。我想只保留一个,并通过添加另一个数组的product_quantity来更新数量丢弃。

我试过这个

  // $input = array_map("unserialize", array_unique(array_map("serialize", $data_array)));

但它只删除没有更新的重复项。

2 个答案:

答案 0 :(得分:0)

删除重复项后。您必须使用$this->db->update_batch()来更新多维数组。像这样......

$this->db->update_batch('table_name',$input,$product_id);

有关详情,请参阅Codeigniter Query Builder

答案 1 :(得分:0)

如果您想在纯PHP中执行此操作,可以使用以下内容:

function cleanDuplicates($aInput) {
    $outPutArray = array();
    foreach($aInput as $element) {
        if(!isset($outPutArray[$element["product_id"]])) {
            $outPutArray[$element["product_id"]] = $element;
        }
        else {
            $outPutArray[$element["product_id"]]["product_quantity"] += $element["product_quantity"];
        }
    }

    return $outPutArray;
}