У меня есть 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] => Array ( [supp_number] => <<<TOTAL >>> [totalamount] => <<<TOTAL >>> [debtorcred] => <<<TOTAL >>> [amount1] => <<<TOTAL >>> [amount2] => <<<TOTAL >>> [amount3] => <<<TOTAL >>> [amount4] => <<<TOTAL >>> [amount5] => <<<TOTAL >>> [amount6] => <<<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; } } } } }