我每天都会生成一个数组,其中会有重复的产品。
[0] => Array
(
[product_id] => 85
[name] => Widescreen Espresso v6.1
[quantity] => 1
)
[1] => Array
(
[product_id] => 85
[name] => Widescreen Espresso v6.1
[quantity] => 2
)
[2] => Array
(
[product_id] => 114
[name] => Panama Esmerelda Diamond Mountain
[quantity] => 1
)
我想找到重复的产品并将它们总计在一个如下所示的数组中:
[0] => Array
(
[product_id] => 85
[name] => Widescreen Espresso v6.1
[quantity] => 3
)
[1] => Array
(
[product_id] => 114
[name] => Panama Esmerelda Diamond Mountain
[quantity] => 1
)
更新:
我不想删除我想要合并重复项的重复项,以便将产品的数量添加到一起。我在Meenesh Jain的答案的帮助下设法解决了这个问题。
$final_array = array();
foreach($order_data as $item => $item_value) {
$pid = $item_value['product_id'];
if(!isset($final_array[$pid])) {
$final_array[$pid] = $item_value;
} else {
$final_array[$pid]['quantity'] += $item_value['quantity'];
}
}
print_r(array_values($final_array));
答案 0 :(得分:1)
您可以使用 mysqli
来完成OR
您可以在阵列上应用自定义方法
$temp_array = $new_array = array();
foreach($array as $key => $arr_values){
if(!in_array($arr_values['product_id'], $temp_array)){
array_push($temp_array, $arr_values['product_id']);
array_push($new_array,$array[$key]);
}
}
//这段代码可以解决问题
答案 1 :(得分:0)
我的尝试:
function newArray($oldarray){
$newarray;
$newarray[0] = $oldarray[0];
$ids;
$ids[0] = array($oldarray[0][product_id],0);
for($i = 1; $i < count($oldarray);$i++){
$add = true;
for($x = 0; $x < count($ids);$x++){
if($oldarray[$i][product_id] == $ids[$x][0]){
$add = false;
$newarray[$ids[$x][1]-1] = array($newarray[$ids[$x][1]-1][product_id],$newarray[$ids[$x][1]-1][name],$newarray[$ids[$x][1]-1][quantity]+$oldarray[$i][quantity]);
}
}
if($add == true){
$newarray[count($newarray)] = $oldarray[$i];
$ids[count($ids)] = array($oldarray[$i][product_id],count($newarray));
}
}
return $newarray;
}
答案 2 :(得分:0)
你需要使用这个函数(需要传递$ array = name of array和$ key作为'product_id'):
function super_unique($array,$key)
{
$temp_array = array();
foreach ($array as &$v) {
if (!isset($temp_array[$v[$key]]))
$temp_array[$v[$key]] =& $v;
}
$array = array_values($temp_array);
return $array;
}
示例:
<?php
$vikas=array('0' => array
(
'product_id' => 85,
'name' => "Widescreen Espresso v6.1",
'quantity' => 1
),
'1' => array
(
'product_id' => 85,
'name' => "Widescreen Espresso v6.1",
'quantity' => 2
),
'2' => array
(
'product_id' => 114,
'name' => "Panama Esmerelda Diamond Mountain",
"quantity" => 1
)
);
function super_unique($array,$key)
{
$temp_array = array();
foreach ($array as &$v) {
if (!isset($temp_array[$v[$key]]))
$temp_array[$v[$key]] =& $v;
}
$array = array_values($temp_array);
return $array;
}
//print_r(array_unique($vikas['product_id']));
$vik=super_unique($vikas,'product_id');
print_r($vik);
?>