我有这样的数组。它包含三个数组列表,两个是相同的产品ID,我想做什么,在列表中添加价格和数量值,并将其制作成一个数组
Array
(
[0] => Array
(
[order_product_id] => 882
[order_id] => 814
[product_id] => 192
[quantity] => 40
[price] => 410.0000
[total] => 16400.0000
[product_value] => 25
)
[1] => Array
(
[order_product_id] => 881
[order_id] => 815
[product_id] => 200
[quantity] => 20
[price] => 1049.0000
[total] => 20980
[product_value] => 60
)
[2] => Array
(
[order_product_id] => 882
[order_id] => 815
[product_id] => 192
[quantity] => 10
[price] => 410.0000
[total] => 4100.0000
[product_value] => 25
)
)
所以在这里,我想要一个像这样的数组
Array
(
[0] => Array
(
[order_product_id] => 882
[order_id] => 814
[product_id] => 192
[quantity] => 60
[price] => 410.0000
[total] => 24600.0000
[product_value] => 25
)
[1] => Array
(
[order_product_id] => 881
[order_id] => 815
[product_id] => 200
[quantity] => 20
[price] => 1049.0000
[total] => 20980
[product_value] => 60
)
)
我尝试了这样的条件代码,但没有正常工作
foreach ($product as $key => $products)
{
foreach ($product as $keys => $row)
{
if ($products['product_id']==$row['product_id'])
{
}
else
{
}
}
}
所以有人请帮我解决一下
答案 0 :(得分:3)
这应该很好用。基本上我们根据新数组中的id为每个数组提供一个键,并且在每次迭代中我们检查我们是否已经完成了之前的操作,如果是,我们添加价格和数量:
$array = array(
0 => array(
'order_product_id' => 882,
'quantity' => 40,
'price' => 410
),
1 => array(
'order_product_id' => 881,
'quantity' => 20,
'price' => 1049
),
2 => array(
'order_product_id' => 882,
'quantity' => 10,
'price' => 410
)
);
$mod_arr = array();
foreach ($array as $item) {
$id = $item['order_product_id'];
// we've already created this item? yes: add together current item price and quantity with previous
if (isset($mod_arr[$id])) {
$mod_arr[$id]['quantity'] = $mod_arr[$id]['quantity'] + $item['quantity'];
$mod_arr[$id]['price'] = $mod_arr[$id]['price'] + $item['price'];
continue;
}
$mod_arr[$id] = $item;
}
echo '<pre>';
print_r($mod_arr);
生成:
Array
(
[882] => Array
(
[order_product_id] => 882
[quantity] => 50
[price] => 820
)
[881] => Array
(
[order_product_id] => 881
[quantity] => 20
[price] => 1049
)
)