Php 从数组中删除重复项并添加其相应的值

Php 从数组中删除重复项并添加其相应的值,php,arrays,Php,Arrays,我有一个关联数组,如下所示 我想从阵列中删除重复的电子邮件,并将其数量添加到相应的电子邮件中。我尝试了php函数array_unique(),但它只提供了单个数量的数据 我当前的输出是 Array ( [amount] => 99 [email] => test@gmail.com ) 但我想要像这样的输出 Array ( [amount] => 104.1 [email] =>

我有一个关联数组,如下所示

我想从阵列中删除重复的电子邮件,并将其数量添加到相应的电子邮件中。我尝试了php函数array_unique(),但它只提供了单个数量的数据

我当前的输出是

Array
    (
        [amount] => 99
        [email] => test@gmail.com

    )
但我想要像这样的输出

 Array
    (
        [amount] => 104.1
        [email] => test@gmail.com

    )
以下是您可以做的:

$arr = array(
    array('amount' => 99, 'email' => 'test@gmail.com'),
    array('amount' => 5.10, 'email' => 'test@gmail.com')
);

$res = array();

foreach ($arr as $bill) {
    if (!isset($res[$bill['email']])) {
        $res[$bill['email']] = 0;
    }

    $res[$bill['email']] += $bill['amount'];
}

// if you want the same output, format the array back to original:
$arr = array();
foreach ($res as $mail => $amount) {
    $arr[] = array('mail' => $mail, 'amount' => $amount);
}
unset($res);
var_dump($arr);
这给了你:

array(1) {
  [0]=>
  array(2) {
    ["mail"]=>
    string(14) "test@gmail.com"
    ["amount"]=>
    float(104.1)
  }
}

您可以在此处进行检查和测试:

1。我试过了,然后让我们看看你的尝试!2您当前的输出是什么?预期的输出是什么?当您说“添加”时,是要将这些金额相加,还是用新的金额替换一个数组中的金额?这只是另一个作业。
array(1) {
  [0]=>
  array(2) {
    ["mail"]=>
    string(14) "test@gmail.com"
    ["amount"]=>
    float(104.1)
  }
}