2017-09-06 110 views
0

我有以下代码组合了2个数组,并且总计相同的值。组合两个数组求和重复值并将它们除以重复数

所以打印将

但期望的结果是

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); 

回答

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); 
+0

谢谢你,它的工作。一个问题,从你的经验来看,这需要很长时间才能执行,因为2个数组每个只有10个项目? – EnexoOnoma

+0

完全没有,2个数组,每个数组也有10个,最多需要一些mili秒,不用担心在这种情况下执行 – zenwraight

+0

再次感谢。它会让我在5分钟内接受这个解决方案 – EnexoOnoma

相关问题