如何检查数组中的唯一元素,并计算与该元素相关的总数


How do i check for unique elements in an array and total an amount assoicated with that element

我正在查询数据库以获取此数组。输出是一个帐号,后跟该帐号的金额。正如您所看到的,帐号有重复的实例。这个数组总是一样的(账号和金额)。如何获得单个帐号的总数?例如,1B2的总金额为10119.59美元。

Array
  (
    [0] => 1B2
    [1] => 1970.40
    [2] => 1B2
    [3] => 1493.60
    [4] => 1B2
    [5] => 1400.25
    [6] => J014 1
    [7] => 1423.20
    [8] => J014 1
    [9] => 2179.20
    [10] => J014 1
    [11] => 1432.00
    [12] => J014 1
    [13] => 711.60
    [14] => 1B2
    [15] => 298.72
    [16] => 1B2
    [17] => 1568.80
    [18] => 1B2
    [19] => 1822.62
    [20] => 1B2
    [21] => 1493.60
    [22] => J014 1
    [23] => 1400.25
    [24] => 1B2
    [25] => 711.60
    [26] => J014 1
    [27] => 1194.88
    [28] => J014 1
    [29] => 1493.60
)

这里有一种使用一组数组函数的方法。

$your_account = '1B2';
$total = array_sum(array_column(array_filter(
    array_chunk($array, 2), function($v, $k) use ($your_account) {
        return $v[0] == $your_account;
    }, ARRAY_FILTER_USE_BOTH), 1));

从内到外工作:

  1. array_chunk创建帐户条目的二维数组
  2. array_filter将数组筛选为仅针对您的帐户的条目
  3. array_column只获取amount列
  4. array_sum合计金额

您可以使用以下代码:

$data = [
    0 => '1B2',
    1 => '1970.40',
    2 => '1B2',
    3 => '1493.60',
    4 => '1B2',
    5 => '1400.25',
    6 => 'J014 1',
    7 => '1423.20',
    8 => 'J014 1',
    9 => '2179.20',
    10 => 'J014 1',
    11 => '1432.00',
    12 => 'J014 1',
    13 => '711.60',
    14 => '1B2',
    15 => '298.72',
    16 => '1B2',
    17 => '1568.80',
    18 => '1B2',
    19 => '1822.62',
    20 => '1B2',
    21 => '1493.60',
    22 => 'J014 1',
    23 => '1400.25',
    24 => '1B2',
    25 => '711.60',
    26 => 'J014 1',
    27 => '1194.88',
    28 => 'J014 1',
    29 => '1493.60',
];
$temp = array();
$i = 0;
$account_key = '';
foreach($data as $key => $value) {
    if ($i % 2 == 0) { //This is the account number
        $account_key = $value;
    } else {    //This is the amount
        $temp[$account_key][] = $value;
    }
    $i++;
}
foreach($temp as $key => $value) { //For each account number sum the amount
    echo $key.': '.array_sum($value).'<br />';
}

结果:

1B2: 10759.59
J014 1: 9834.73