note 108555 deleted from function.array-sum by levim
| From: | levim@php.net | Date: | Tue, 18 Mar 2014 19:41:04 +0000 |
| Subject: | note 108555 deleted from function.array-sum by levim | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-198961@lists.php.net to get a copy of this message | ||
Note Submitter: pablo114 at interia dot eu
----
If you want to sum all values (horizontal or vertical) use this function:
<?php
function sumArray($array, $params = array('direction' => 'x', 'key'
=> 'xxx'), $exclusions = array()) {
if(!empty($array)) {
$sum = 0;
if($params['direction'] == 'x') {
$keys = array_keys($array);
for($x = 0; $x < count($keys); $x++) {
if(!in_array($keys[$x], $exclusions))
$sum += $array[$keys[$x]];
}
return $sum;
} elseif($params['direction'] == 'y') {
$keys = array_keys($array);
if(array_key_exists($params['key'], $array[$keys[0]])) {
for($x = 0; $x < count($keys); $x++) {
if(!in_array($keys[$x], $exclusions))
$sum += $array[$keys[$x]][$params['key']];
}
return $sum;
} else return false;
} else return false;
} else return false;
}
?>
Some examples now:
<?php
$array1 = array('myKey1' => 2, 'myKey2' => 5, 'myKey3' => 8);
$array2 = array(array('myKey1' => 2, 'myKey2' => 5, 'myKey3'
=> 8), array('myKey1' => 2, 'myKey2' => 5, 'myKey3' =>
8));
/*Sum an array*/
print_r(sumArray($array1)); //outputs: 15
/*Sum an array without adding "myKey2" key*/
print_r(sumArray($array1, array('direction' => 'x'),
array('myKey2'))); //outputs: 10
/*Sum a multi-dimensional array horizontally without adding "myKey3" key*/
print_r(sumArray($array2[0], array('direction' => 'x'),
array('myKey3'))); //outputs: 7
/*Sum a multi-dimensional array vertically (by "myKey1" key) without adding [0] row*/
print_r(sumArray($array2, array('direction' => 'y', 'key' =>
'myKey1'), array('0'))); //outputs: 2
?>