Archiv verlassen und diese Seite im Standarddesign anzeigen : Array aufsummieren
Marilu
28.10.2005, 11:08:55
Moin,
ich suche nach einer eleganten Möglichkeit, ein Array aufzusummieren. Das Array hat m Zeilen mit n Spalten. Ich möchte ein Array erhalten, das 1 Zeile mit n Spalten hat, wo die Summen der Spalten drinstehen. Gibts da was, ohne die einzelnen Zeilen durchlaufen zu müssen?
|Coding
28.10.2005, 12:00:44
Du musst in diesem Fall hingehen und mit einer Schleife alle Spalten durchlaufen und dann jeweils auf jede Spalte einmal array_sum() anwenden. Dann noch jeweils das Ergebnis der Summierung in ein Array schreiben und fertig.
Beispiel:
<?PHP
$array = array(array(1, 2, 3, 4, 5),
array(6, 7, 8, 9, 10));
$result = array();
foreach($array as $zw_summe){
$result[] = array_sum($zw_summe);
}
print_r($result);
?>
Ich hoffe ich habe dich da korrekt verstanden?
Marilu
28.10.2005, 12:10:25
> Ich hoffe ich habe dich da korrekt verstanden?
Nach Deinem Zahlenbeispiel möchte ich folgendes Array erhalten:
array(7, 9, 11, 13, 15)
|Coding
28.10.2005, 12:13:24
Möchtest Du es jetzt genau anders`herum wie im obigen Beispiel?
Marilu
28.10.2005, 13:32:20
Möchtest Du es jetzt genau anders`herum wie im obigen Beispiel?Ja. Du hast zeilenweise addiert, ich brauche es spaltenweise.
|Coding
28.10.2005, 14:08:06
Ich habe spaltenweise addiert:
array(1, array(6,
2, 7,
3, 8,
4, 9,
5) 10)
:-)
Spass bei Seite.
Dir wird wohl nichts anderes übrig bleiben als doch den umständlichen Weg zu gehen.
Versuch es mal so:
Durchlaufe alle Zeilen des Arrays und speichere jeden Wert (jeder Wert entspricht ja einem Eintrag in einer Spalte) einer Zeile in einem neuen Array. Am Ende hast Du dann m Arrays mit n Zeilen. Diese musst du dann noch aufsummieren, wie Oben schon gezeigt.
Marilu
28.10.2005, 14:27:00
Ja, genau so war jetzt mein Ansatz. Vielen Dank.
xabbuh
28.10.2005, 14:34:26
So müsste es auch mit einem Ergebnisarray funktionieren:
<?php
$array = array(
array(1, 2, 3, 4, 5),
array(6, 7, 8, 9, 10)
);
$result = array();
foreach($array as $line) {
foreach($line as $col => $cell) {
if(!array_key_exists($col, $result))
$result[$col] = 0;
$result[$col] += $cell;
}
}
?>
Marilu
31.10.2005, 16:38:36
Ja, das sollte auch gehen. Aber ich habe hier auch die geschachtelten Schleifen. Ich habs jetzt letztendlich so ähnlich gelöst, wie von Coding beschrieben. Trotzdem vielen Dank.
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.