FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » summing an array of arrays
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: summing an array of arrays [message #173515 is a reply to message #173501] Sun, 17 April 2011 06:55 Go to previous messageGo to previous message
Unrest is currently offline  Unrest
Messages: 10
Registered: April 2011
Karma:
Junior Member
Am Fri, 15 Apr 2011 17:06:12 -0700 schrieb jr:

> $aryTemp=("A"=>Array(1,5,3),
> "B"=>Array(15,20,52))
>
> sum_subarrays_by_key($aryTemp, $aryTemp[$key]
>
>
> function sum_subarrays_by_key($aryTemp, $key) sum=0;
> foreach($aryTemp as $sub_array){
>
> $sum += $sub_array[$key];}
> }
> return $sum:
> }
>
> What I want to know how to do is change the above script to make it add
> a 3rd array of arrays?
> c=> Array(C1=> Array(17,4,8), C2=>Array(1,4,10))
>
> thanks, Jan

Good morning Jan.


First off: I didn't even look at your code.
I implemented the solution to your problem with recursion - from scratch.


The example call sums to 0, as I subtract the sum of all the arrays'
values (197) from it.

It's lacking safeguards, but as the only intention was to show you how to
do such a task.. ;)

*------------ snip -----------*
function recurseSumArray($arr){
$sum=0;

foreach ($arr as $value){
if( ! is_array($value)){
$sum += $value;
}else{
$sum += recurseSumArray($value);
}
}

return $sum;
}

$arr = array('A'=>array(7,4,2),
'B'=>array(2,42,-1, 105),
'C'=>array(0,2,1, 33),
-197);
$sum = recurseSumArray($arr);

echo $sum;
*------------------------------*

If you've got any questions, feel free to ask.


Yours,
Michael
[Message index]
 
Read Message
Read Message
Read Message
Previous Topic: Figure out path to php.ini
Next Topic: will code/solve problems for money
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Sat Nov 23 19:13:24 GMT 2024

Total time taken to generate the page: 0.04123 seconds