2017-09-06 12 views
0

2つの配列を結合し、同じ値を合計する次のコードがあります。 (10+20)/2は私が探していますものですので、2つの配列を結合して重複値を合計し、重複数で除算します。

ので、印刷が

が、所望の結果になりますが

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

です。

これを達成するためにコードを編集するにはどうすればよいですか?

$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

はそれが仕事をして、ありがとう助けるかもしれません。あなたの経験から、1つの質問は、2つのアレイにそれぞれ10個のアイテムしかないことを心に留めておくのに時間がかかりますか? – EnexoOnoma

+0

いいえ、2つの配列とそのあまりにも10個のアイテムがありますが、最大で何ミリ秒かかります。この場合は実行を心配しないでください – zenwraight

+0

もう一度ありがとうございます。それは私がこの解決策を5分で受け入れることを可能にします – EnexoOnoma

関連する問題