Page 1 of 1

Array function to sum values with same key

Posted: Tue Feb 19, 2008 4:21 pm
by Reviresco
Is there an array function to add together values that have identical keys?

For example, an array with:

red=>4,
blue=>3,
red=>5

would be returned:

red=>9,
blue=>3

Re: Array function to sum values with same key

Posted: Tue Feb 19, 2008 4:50 pm
by Christopher
You can't have duplicate keys in an array like that. I would need to be:

Code: Select all

array(
     array('color'=>'red', 'amount'=>4),
     array('color'=>'blue, 'amount'=>3),
     array('color'=>'red, 'amount'=>5),
);

Re: Array function to sum values with same key

Posted: Tue Feb 19, 2008 5:04 pm
by Reviresco
Oops, forgot I was thinking of comparing two arrays here.

Example:

array1:

red=>3,
blue=>2

array2:

red=>4,
blue=>3

and I want to return:

red=>7,
blue=>5

Re: Array function to sum values with same key

Posted: Tue Feb 19, 2008 5:21 pm
by Chris Corbyn

Code: Select all

<?php
 
function array_sum_combine(/* $arr1, $arr2, ... */)
{
  $return = array();
  $args = func_get_args();
  foreach ($args as $arr)
  {
    foreach ($arr as $k => $v)
    {
      if (!array_key_exists($k, $return))
      {
        $return[$k] = 0;
      }
      $return[$k] += $v;
    }
  }
  return $return;
}
 
 
var_dump(array_sum_combine(array('red' => 1, 'green' => 3), array('bue' => 9, 'red' => 2), array('red' => -1, 'green' => 4)));
 
/*
 array (
  red => 2,
  green => 7,
  blue => 9
)
*/
Untested.