Antworten auf deine Fragen:
Neues Thema erstellen

Werte in Array mit gleicher ID zusammenrechnen

Fugel

rebmeM

PSD Beta Team
Hallo Leute,

ich stehe gerade total auf den Schlauch und hoffe mal ihr könnt mir helfen.

Ich lese eine TXT aus in der pro Zeile mehrere Werte durch ein Komma getrennt stehen.

Bsp.:

Max, 1234, 0
Sven, 789, 1234
Max, 789, 0

Im Moment lese ich jede Zeile in einen Array und die Kommagetrennten Werte lade ich durch explode() ebenfalls in einen Array. Nun möchte ich erreichen das es mir nur die Werte von Max (nach dem ersten Komma) zusammenrechnet und ausgibt, also 2023.

Wie schaffe ich das?
 

SineTempore

Nicht mehr ganz neu hier

AW: Werte in Array mit gleicher ID zusammenrechnen

Pseudocode:
PHP:
int sum = 0;
foreach (row in text) {
  if(row[0] == "Max") {
    sum += row[1];
  }
}
meintest du so?
 

Fugel

rebmeM

PSD Beta Team
AW: Werte in Array mit gleicher ID zusammenrechnen

jo supi, genau das meine ich. Nur noch eine Sache, wie kann ich es schaffen das er mir das für alle unterschiedlichen Namen ausgibt? Also das er mit für Max die Gesamtsumme und auch für Sven die Gesamtsumme anzeigt. Welche Namen in der Liste stehen weis ich vorher allerdings nicht und es können auch mehr als 20 verschiedene sein.
 

DarkFather

Nicht mehr ganz neu hier

AW: Werte in Array mit gleicher ID zusammenrechnen

Ich würde das in ein Array laden, wobei der Name als Key und die Zahl als Value gespeichert wird. Die Schleife sieht danach so aus:

PHP:
$sum = array();
foreach($array as $key => $value){
    $sum[$key] += $value;
}

Habs nicht probiert, sollte aber gehen... Wenn du probleme mit dem Speichern in ein Array hast poste bitte den Code den du bereits hast, dann muss ich das Rad nicht neu erfinden.

MfG
Dark
 

Fugel

rebmeM

PSD Beta Team
AW: Werte in Array mit gleicher ID zusammenrechnen

Im Moment hab ich das:

PHP:
$array = file("Log.txt");

foreach ($array as $element) {
    $groupe = explode(',',$element);
        echo $groupe[5]." ".$groupe[7] . "<br>"; // Dateiinhalt ausgeben
        
        
            if($groupe[5]==" Max"){
                $schaden+=$groupe[7];
            }
}
 

DarkFather

Nicht mehr ganz neu hier

AW: Werte in Array mit gleicher ID zusammenrechnen

Hab es extra getestet... Es funktioniert:
PHP:
$array = file("Log.txt");
$values = array();
foreach ($array as $line) {
	$explode = explode(', ', $line, 2);
	$name = $explode[0];
	$values[$name] += array_sum(explode(", ", $explode[1]));
}

Wenn du PHP5 hast würde ich noch Flags in file() setzen:
file('Log.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

MfG
Dark


//Edit
hier noch Eingabe und Ausgabe:

Eingabe:
Code:
Array
(
    [0] => Max, 1234, 100

    [1] => Sven, 50, 80, 1234

    [2] => Max, 60, 0
)

Ausgabe:
Code:
Array
(
    [Max] => 1394
    [Sven] => 1364
)
 
Zuletzt bearbeitet:

Fugel

rebmeM

PSD Beta Team
AW: Werte in Array mit gleicher ID zusammenrechnen

Danke erstmal für deine Mühe, leider kommt bei ir der Fehler Notice: Undefined index:

Ne Idee?
 

DarkFather

Nicht mehr ganz neu hier

AW: Werte in Array mit gleicher ID zusammenrechnen

Hier eine Funktionierende Version, mit print_r als Ausgabe (vorher war kein print_r dabei, deshalb ausser Notice keine Ausgabe):
PHP:
$array = file("Log.txt");
$values = array();
foreach ($array as $line) {
	$explode = explode(", ", $line, 2);
	$name = $explode[0];
	if(isset($values[$name])){
		$values[$name] += array_sum(explode(", ", $explode[1]));
	} else {
		$values[$name] = array_sum(explode(", ", $explode[1]));
	}
}
print_r($values);

Eine Notice ist zwar irrelevant, aber eben unschön, vorallem wenn php diese ausgibt (=> Developer-Mode). Natürlich existiert beim ersten Auftreten des Names noch kein Index im Array, deshalb die Notice weil ich direkt addiert habe. Jetzt eben eine Abfrage mehr dafür keine Notice.

Die Ausgabe würde übrigens trotzdem funktionieren, habe allerdings in meinem Script keine Ausgaben gemacht, da ich nicht wusste wie du die Daten formatieren willst.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben