2016-10-13 7 views
1

この配列の結果をどのようにすることができますか。ネストされた配列要素をマージする

array (size=2) 
    0 => 
    array (size=6) 
     'processed' => int 7 
     'committed' => int 0 
     'merged' => int 6 
     'updated' => int 0 
     'skipped' => int 1 
     'ids' => 
     array (size=6) 
      '57ff644ab0e6df8a148b45c7' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45c9' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45ca' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45cb' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45cc' => string 'merged' (length=6) 
      '57ff644bb0e6df8a148b45cd' => string 'merged' (length=6) 
    1 => 
    array (size=6) 
     'processed' => int 6 
     'committed' => int 0 
     'merged' => int 4 
     'updated' => int 0 
     'skipped' => int 2 
     'ids' => 
     array (size=5) 
      '57ff644cb0e6df98148b4574' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4575' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4576' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4578' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4579' => string 'skipped' (length=7) 

次のようなものです。

array (size=1) 
    0 => 
    array (size=6) 
     'processed' => int 13 
     'committed' => int 0 
     'merged' => int 12 
     'updated' => int 0 
     'skipped' => int 1 
     'ids' => 
     array (size=13) 
      '57ff644ab0e6df8a148b45c7' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45c9' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45ca' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45cb' => string 'merged' (length=6) 
      '57ff644ab0e6df8a148b45cc' => string 'merged' (length=6) 
      '57ff644bb0e6df8a148b45cd' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4574' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4575' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4576' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4578' => string 'merged' (length=6) 
      '57ff644cb0e6df98148b4579' => string 'skipped' (length=7) 

各要素のマージに似ています。

私は試しました。

foreach ($array as $key => $value) { 
    $new = array_merge_recursive($blah[$key]); 
} 

他にもいくつかのアプローチがありますが、私はそれを得ることができません。

答えて

1

次のようなarray_reduceを使用することができます。

$finalArray = array_reduce($myArray, function($carry, $item) { 

    foreach ($item as $key => $value) { 
     if (!isset($carry[$key])) { 
      $carry[$key] = $value; 
      continue; 
     } 
     if (is_array($value)) { 
      $carry[$key] = array_merge($carry[$key], $value); 
     } else { 
      $carry[$key] += $value; 
     } 
    } 

    return $carry; 
}, []); 
+1

は私は..あなたはまだここでやっていることの周りにいた取得することはできませんが、完璧に動作しているようです – mikelovelyuk

関連する問題