2017-09-06 146 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

相關問題