私は、整数またはそれ以上の配列(それ自身は整数を含む)を含むことができる2つの配列をマージ/合計しようとしています。merge/sum多次元配列php
値が整数の場合、最終配列でそれらを合計する必要があります。 値が配列の場合は、値をループして最終配列で合計する必要があります。
値またはサブ配列が基本配列の1つにのみ存在する場合は、最終配列のサブ配列に追加する必要があります。 (これは私が行うことができないものです)。)
私の配列は、このようなものです:
ARRAY 1
[1466859600] => Array
(
[TOTAL] => 27217
[AAA] => Array
(
[FD_CDP] => 1746
[LO_SC_MIC] => 4654
[FD_ATS] => 893
[CDP] => 40
[SUPERVISION] => 9
[CONTROL] => 4
[ATS] => 4
[EVT_ACK] => 3
)
[BBB] => Array
(
[FD_CDP] => 1376
[LO_SC_MIC] => 4606
[FD_ATS] => 826
[FD_ATSS] => 451
[LO_SFRC] => 4
[FD_S2] => 259
[2_LOSC] => 2
)
[CCC] => Array
(
[FD_CDP] => 1333
[LO_SC_MIC] => 4725
[FD_ATS] => 856
[CONTROL] => 4
[ATS] => 2
[EVT_ACK] => 5
)
ARRAY 2
[1466859600] => Array
(
[TOTAL] => 95406
[AAA] => Array
(
[FD_ATSS] => 1719
[LO_SC_MIC] => 16830
[CONTROL] => 16
[NEW] => 7
[NOEL] => 206
)
[BBB] => Array
(
[SUPERVISION] => 23
[CDP] => 158
[CONTROL] => 40
[2_LOSC] => 14
[ATS] => 6
[EVT_ACK] => 4
)
[CCC] => Array
(
[EVT_ACK] => 167
[LO_SFRC] => 248
[SUPERVISION] => 23
)
私はこのような機能を書いた:
function sumArrayValues($array1, $array2)
{
foreach ($array1 as $key => $value)
{
if (is_array($array1[$key]))
{
echo "it's an array\n I need to reloop\n";
sumArrayValues($array1[$key], $array2[$key]);
}
else
{
echo "FIRST VALUE TO SUM\n";
print_r($array1[$key]."\n");
echo "SECOND VALUE TO SUM\n";
print_r($array2[$key]."\n");
$array1[$key] = (int)$array1[$key] +(int)$array2[$key];
echo "--------RESULT of SUM array1&2----------\n";
}
}
return $array1;
}
しかし、この機能はしていませんサブ配列が同じ順序でない場合、サブ配列または値が2番目の配列にのみ存在する場合は、2つのケース(およびそれ以上)を考慮します。
関数の例は良い助けになりますが、より基本的なレベルでは、私もそれを行うアルゴリズムを理解することができません。 アイデア
この5月には役立ちます、[マージされた値を合計することにより、2つの配列をマージする方法](https://stackoverflow.com/a/6086409/6521116) –