如何检查嵌套数组是否包含重复项?如果它确实包含重复,那么如何更新它?
示例
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)));
但它只删除没有更新的重复项。
答案 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;
}