PHP根据一些公共值合并数组的两个元素,并添加其他值

时间:2018-11-29 09:54:31

标签: php arrays

我有一个以下数组:

[product] => Array
    (
        [0] => Array
            (
                [qty] => 1
                [code] => 147818
                [price] => 11
                [name] => Product1
            )

        [1] => Array
            (
                [qty] => 2
                [code] => 147818
                [price] => 11
                [name] => Product1
            )

        [2] => Array
            (
                [qty] => 1
                [code] => 567432
                [price] => 31
                [name] => Product2
            )

    )

如果代码相同,我想添加数量。也就是说,我希望结果数组为:

[product] => Array
        (
            [0] => Array
                (
                    [qty] => 3
                    [code] => 147818
                    [price] => 11
                    [name] => Product1
                )

            [1] => Array
                (
                    [qty] => 1
                    [code] => 567432
                    [price] => 31
                    [name] => Product2
                )

        )

仅当代码相同时,才应合并元素。我该如何实现?

1 个答案:

答案 0 :(得分:0)

尝试使用此代码,它将qty合并和合并code

$products = [
    [
        'qty' => 1,
        'code' => 147818,
        'price' => 11,
        'name' => 'Product1'
    ],

    [
        'qty' => 2,
        'code' => 147818,
        'price' => 11,
        'name' => 'Product1'
    ],

    [
        'qty' => 1,
        'code' => 567432,
        'price' => 31,
        'name' => 'Product2'
    ],
];


$output = [];

for ($i=0; $i<count($products); $i++) {

    if ($output[$products[$i]['code']]['code'] == $products[$i]['code']) {
        $output[$products[$i]['code']]['qty'] += $products[$i]['qty'];
    }else{
        $output[$products[$i]['code']] = $products[$i];
    }
}
$output = array_values($output);

print_r($output);