0

次のような多次元配列があります。

Array
(
    [0] => Array
    (
        [GB] => 20827
        [US] => 73
        [ES] => 23
        [AU] => 15
        [DE] => 12
        [MY] => 4
        [QA] => 1
        [VN] => 1
        [SK] => 1
        [FJ] => 1
        [ME] => 1
        [TR] => 1
        [LV] => 1
    )

    [1] => Array
    (
        [GB] => 15070
        [US] => 3920
        [IE] => 1711
        [PH] => 1071
        [MT] => 578
        [AU] => 423
        [HR] => 241
        [ZA] => 210
        [FR] => 139
    )
)

多次元配列の各配列のすべての連想要素を含む新しい配列を作成し、重複したキーの値を合計したいと考えています。

サンプル入力からの望ましい結果:

array (
  'GB' => 35897,
  'US' => 3993,
  'ES' => 23,
  'AU' => 438,
  'DE' => 12,
  'MY' => 4,
  'QA' => 1,
  'VN' => 1,
  'SK' => 1,
  'FJ' => 1,
  'ME' => 1,
  'TR' => 1,
  'LV' => 1,
  'IE' => 1711,
  'PH' => 1071,
  'MT' => 578,
  'HR' => 241,
  'ZA' => 210,
  'FR' => 139,
)
4

3 に答える 3

1

各サブ配列を調べてから、キーと値のペアをループします。$finalそれらを配列に追加します。

$final = [];
foreach($masterArray as $subArray) {
    foreach($subArray AS $key => $value) {
        $final[$key] = isset($final[$key])
            ? $final[$key] + $value
            : $value;
    }
}

作業例: https://3v4l.org/6XBbD

于 2016-03-12T01:01:35.367 に答える
0

おそらく何かのような

$array = count($array1) > count($array2) ? $array1 : $array2;
$otherArray = count($array1) > count($array2) ? $array2 : $array1;

array_walk($array, function(&$value, $key, $otherArray) {
    $value = $value + (isset($otherArray[$key]) ? $otherArray[$key] : 0);
}, $otherArray);
于 2016-03-12T00:56:17.553 に答える