将两个数组合并为重复值并将它们除以重复数

时间:2017-09-06 20:54:02

标签: php arrays

我有以下代码组合了2个数组,并将相同的值相加。

所以打印将是

Array
(
    [1] => 30
    [2] => 30
    [3] => 40
)

但是期望的结果是

Array
(
    [1] => 15
    [2] => 30
    [3] => 40
)

因为我正在寻找(10+20)/2

如何编辑代码来实现这个目标?

$ids = Array(1, 1, 2, 3);
$quants = Array(10, 20, 30, 40);

$a = array_unique($ids);
$a = array_combine($a, array_fill(0, count($a), 0));

foreach($ids as $k=>$v) {
  $a[$v] += $quants[$k];
}

print_r($a);

1 个答案:

答案 0 :(得分:0)

也许这可能会有所帮助

    $ids = Array(1, 1, 2, 3);
    $quants = Array(10, 20, 30, 40);

    $a = array_unique($ids);
    $a = array_combine($a, array_fill(0, count($a), 0));

    $x = array_unique($ids);

    $count_map = [];

    foreach ($x as $temp) {
      $count_map[$temp] = 0;
    }

    foreach($ids as $k=>$v) {
      $count_map[$v] = $count_map[$v] + 1;
      $a[$v] += $quants[$k];
      $a[$v] = $a[$v]/$count_map[$v];
    }

    print_r($a);