Re: Adding arrays
- From: ZeldorBlat <zeldorblat@xxxxxxxxx>
- Date: 7 May 2007 11:08:56 -0700
On May 7, 1:21 pm, Rami Elomaa <rami.elo...@xxxxxxxxx> wrote:
ZeldorBlat kirjoitti:
On May 7, 11:05 am, dennis.spreng...@xxxxxxxxx wrote:
Consider the following multi-dimensional array:
---------------------------
$arr = array(
array(3, 5, 7, 9),
array(2, 4, 6, 8),
array(1, 3, 5, 7)
);
function add_arrays($arr) {
for ($row = 0; $row < count($arr[0]); $row++) {
for ($column = 0; $column < count($arr[$column]); $column++) {
$totals[$row] = $totals[$row] + $arr[$column][$row];
}
}
print_r($totals);
}
add_arrays($arr);
---------------------------
This returns the following array:
Array ( [0] => 6 [1] => 12 [2] => 18 [3] => 24 )
These are the totals of the array's in $arr: 6 (3 + 2 + 1, added all
first elements), 12 (5 + 4 + 3, added all second elements), etc. This
took me quite a portion of the day to construct ;) However, I would
like add_arrays to return a multidimensional array like this:
Array (
Array ( [0] => 3 [1] => 5 [2] => 7 [3] => 9 ) // 1st row
Array ( [0] => 5 [1] => 9 [2] => 13 [3] => 17 ) // 1st row + second
row (i.e. 5 = 3 + 2)
Array ( [0] => 6 [1] => 12 [2] => 18 [3] => 24 ) // 1st _ 2nd + 3rd
row (i.e. 6 = 3 + 2 + 1)
)
Could somebody please help me building a function that does just that?
Adding one row to the previous one and adding the result to the output
array? Any help would be greatly apprectiated!
Here's one way. Obviously there are others, also.
function add_arrays_cumulative($arr) {
$out = array();
for($i = 0; $i < count($arr); $i++) {
This is hair-splitting, but since count($arr) is static, it would save
some cpu cycles to store it in a variable instead of calling count() on
each iteration:
for($i = 0, $limit=count($arr); $i < $limit ; $i++) {
Or better yet, iterate the array with foreach:
foreach($arr as $i => $row) {
if(!isset($out[$i]))
$out[$i] = array();
for($j = 0; $j < count($arr[$i]); $j++)
Same goes here.
I've gotten so used to foreach that I'm missing it a lot when I'm using
a language that hasn't got such a structure... It's so convinient.
--
Rami.Elo...@xxxxxxxxx
"Wikipedia on vähän niinq internetin raamattu, kukaan ei pohjimmiltaan
usko siihen ja kukaan ei tiedä mikä pitää paikkansa." -- z00ze
Yes -- you're correct on both. In the normal course of things I would
save the value of count() and also use a foreach instead. Using
count() over and over again makes it a bit easier to follow the code,
and the OP was using regular for loops so I stuck with those.
In practice I use foreach almost exclusively -- and you're right in
that I really miss it in other languages :)
.
- References:
- Adding arrays
- From: dennis . sprengers
- Re: Adding arrays
- From: ZeldorBlat
- Re: Adding arrays
- From: Rami Elomaa
- Adding arrays
- Prev by Date: Re: Creating Variable using mysql and php
- Next by Date: Re: PHP IDE
- Previous by thread: Re: Adding arrays
- Next by thread: Re: Adding arrays
- Index(es):
Relevant Pages
|