2011-08-03 8 views
1

私はこの配列があります。PHP配列和

Array ([0] => 
    Array ( 
      [0] => Array ( 
       [07] => Array ( 
        [2] => 3254.9 (the sum of each 07) 
        [3] => 6521545 (the sum) 
        [4] => 98474916521621 (the sum) 
       )) 
) 
Array ([1] => 
      [0] => Array ( 
       [08] => Array ( 
        [2] => 305.7 (not summed cause month 08 is only one) 
        [3] => 375857 "" 
        [4] => 1000000002 "" 
       )) 
    ) 
) 

すべてのヘルプ:私は、キー07の最終的な配列の合計を必要とする

Array ([0] => 
     Array ( 
     [0] => Array ( 
      [07] => Array ( 
       [2] => 352.9 
       [3] => 375737 
       [4] => 1000000002 
      )) 
     [1] => Array ( 
      [07] => Array ( 
       [2] => 362.1 
       [3] => 375797 
       [4] => 1000000002 
     )) 
) 
Array ([1] => 
     [0] => Array ( 
      [08] => Array ( 
       [2] => 305.7 
       [3] => 375857 
       [4] => 1000000002 
     )) 
    ) 
) 

は次のように(月)?ここで

+0

動作しないコードを表示できますか?それとも、私たちが一から書いて欲しいのですか? – Yoshi

+0

数字は正しいですか? 07年の金額は、何らかの結論を導くために少し恣意的に見える。 – aefxx

+0

私はゼロからそれを書く必要がある! – Ste

答えて

1

、これを試してみてください - 私はそれが(3 foreachの-ES)どちらも完璧にも最適なソリューションですが、それが合理的に大規模なデータセット上で動作確信している...

$ inputArrayは多次元配列ですあなたが提供されたデータ、ところで...

EDIT:固定バージョン:

$result = array(); 

foreach($inputArray as $subArray) { 

    foreach ($subArray as $subKey => $member) { 

     if (empty($result[$subKey])) { 

      $result[$subKey] = $member; 

     } else { 
      foreach ($member as $id => $subMember) { 

       if (empty($result[$subKey][$id])) { 

        $result[$subKey][$id] = $subMember; 

       } else { 

        $result[$subKey][$id] += $subMember; 

       } 
      } 
     } 
    } 
} 

EDIT2:あなたは配列の形式を変更したので、解決策は異なります。

注:$ array1と$ array2は、あらかじめ定義された "グローバル"配列です。

$arrayWrapper = array_merge((array) $array1, (array) $array2); 

$result = array(); 

foreach ($arrayWrapper as $inputArray) { 

    foreach($inputArray as $subArray) { 

     foreach ($subArray as $subKey => $member) { 

      if (empty($result[$subKey])) { 

       $result[$subKey] = $member; 

      } else { 
       foreach ($member as $id => $subMember) { 

        if (empty($result[$subKey][$id])) { 

         $result[$subKey][$id] = $subMember; 

        } else { 

         $result[$subKey][$id] += $subMember; 

        } 
       } 
      } 
     } 
    } 
} 

あなたのデータでテストしたところ、うまくいくはずです。

乾杯。

+0

私はこれを試してみましたが、うまくいきません!私はprint_r $ resultと同じ配列を参照してください! – Ste

+0

申し訳ありませんが、私はそれをテストし、修正しました。今、うまくいくはずです。 – Nemanja

+0

Thx!作業! 2つのグローバル配列を追加して私の質問を編集しました!その方法でコードを修正できますか?どうしたらいいのか理解できない! – Ste

関連する問題