Php 如何对相同元素id的数组的值求和

Php 如何对相同元素id的数组的值求和,php,arrays,Php,Arrays,我想要数组元素的和,它们具有相同的元素“Id”。 我想得到不包含重复元素“id”的新数组。 我的数组结构如下所示 Array ( [0] => Array ( [id] => 693 [quantity] => 40 ) [1] => Array ( [id] => 697 [quantity] =>

我想要数组元素的和,它们具有相同的元素“Id”。 我想得到不包含重复元素“id”的新数组。 我的数组结构如下所示

Array
(
    [0] => Array
        (
            [id] => 693
            [quantity] => 40
        )

    [1] => Array
        (
            [id] => 697
            [quantity] => 10
        )

    [2] => Array
        (
            [id] => 693
            [quantity] => 20
        )

    [3] => Array
        (
            [id] => 705
            [quantity] => 40
        )

)
我想得到预期的结果

Array
(
    [0] => Array
        (
            [id] => 693
            [quantity] => 60
        )

    [1] => Array
        (
            [id] => 697
            [quantity] => 10
        )



    [2] => Array
        (
            [id] => 705
            [quantity] => 40
        )

)
试试这个

<?php 
$array = array(
        array('id' => 693, 'quantity' => 40),
        array('id' => 697, 'quantity' => 10),
        array('id' => 693, 'quantity' => 20),
        array('id' => 705, 'quantity' => 40),
        );

$result = array();
foreach($array as $k => $v) {
    $id = $v['id'];
    $result[$id][] = $v['quantity'];
}

$new = array();
foreach($result as $key => $value) {
    $new[] = array('id' => $key, 'quanity' => array_sum($value));
}
echo '<pre>';
print_r($new);
?>

您还可以执行以下操作:



检查此处
http://stackoverflow.com/questions/1496682/how-to-sum-values-of-the-array-of-the-same-key
在这里发布任何问题之前先搜索自己。@Gowri,我不想要数组的总和,我想要数量的总和,当id是相等的时候:@ShuhaibV你搜索了一整天???我刚刚在google中添加了这行“array value sum and remove duplicate PHP”,第一个结果就是我在上面发布的链接。
<?php
$final = array();
foreach($array as $value) {
    $id = $value['id'];
    $filter = array_filter($array, function($ar) {
        GLOBAL $id;
        $valueArr = ($ar['id'] == $id);
        return $valueArr;
    });
    $sum = array_sum(array_column($filter, 'quantity'));
    $final[$id] = array('id' => $id, 'quantity' => $sum);
}
echo '<pre>';
print_r($final);
?>