Объединить 2 массива и суммировать значения (числовые клавиши)

У меня есть 2 массива

Array ( [010156] => Array ( [supp_number] => 010156 [totalamount] => 4.113,23 [debtorcred] => H [amount1] => 4.113,23- [amount2] => [amount3] => [amount4] => [amount5] => [amount6] => ) ) Array ( [010156] => Array ( [supp_number] => 010156 [totalamount] => 4.113,23 [debtorcred] => H [amount1] => 4.113,23- [amount2] => [amount3] => [amount4] => [amount5] => [amount6] => ) ) 

Возможно ли, что я могу объединить эти отдельные массивы в один и добавить значения вместе, чтобы результат был следующим:

 Array ( [010156] =&gt; Array ( [supp_number] =&gt; <<<TOTAL >>> [totalamount] =&gt; <<<TOTAL >>> [debtorcred] =&gt; <<<TOTAL >>> [amount1] =&gt; <<<TOTAL >>> [amount2] =&gt; <<<TOTAL >>> [amount3] =&gt; <<<TOTAL >>> [amount4] =&gt; <<<TOTAL >>> [amount5] =&gt; <<<TOTAL >>> [amount6] =&gt; <<<TOTAL >>> ) ) 

Это функция, которую я имею в данный момент, но я не могу заставить ее работать:

 function array_merge_numeric_values() { $arrays = func_get_args(); $merged = array(); foreach ($arrays as $array) { foreach ($array as $key => $value) { if ( ! isset($merged[$key])) { $merged[$key] = $value; } else { $merged[$key] += $value; } } } 

Этот фактический расчет может быть выполнен в 2 строках кода, нет необходимости в циклах:

http://codepad.viper-7.com/ieSkHQ

 $arr1 = array('amount1' => 1, 'amount2' => 6); $arr2 = array('amount1' => 2, 'amount2' => 7); $add = function($a, $b) { return $a + $b; }; $summedArray = array_map($add, $arr1, $arr2); print_r($summedArray); 

Вам просто нужно внести соответствующую корректировку для учета вашей вложенной структуры.

создать новый массив и цикл в первом массиве

 $array1 = array('my_num' => 10, 'my_num2' => 20); $array2 = array('my_num' => 15, 'my_num2' => 25); $newArray = array(); foreach($array1 as $num => $one){ if(isset($array2[$num])){ $newArray[$num] = $one+$array2[$num]; } else { $newArray[$num] = $one; } } print_r($newarray); 

$value в вашем случае – это массив, а не значение. Вы можете попробовать следующее:

 function array_merge_numeric_values() { $arrays = func_get_args(); $merged = array(); foreach ($arrays as $array) { foreach ($array as $key => $value) { if(!isset($merged[$key])) { $merged[$key] = array(); } foreach($value as $kk => $vv) { if ( ! isset($merged[$key][$kk])) { $merged[$key][$kk] = $vv; } else { $merged[$key][$kk] += $vv; } } } } }