如何添加重复值数组并添加两个值

时间:2018-06-03 05:28:35

标签: php arrays codeigniter

我有这样的数组。它包含三个数组列表,两个是相同的产品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
                    {

                    }
                }
           }

所以有人请帮我解决一下

1 个答案:

答案 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
        )

)