Arrays auswerten und zu einem neuen Array zusammenfassen
Verfasst: 20.05.2015 15:37
Hallo, ich habe mehrere Arrays mit doppelten Nutzereinträgen. Ich möchte die Arrays nach den gleichen Nachnamen
durchsuchen und ein neues Array zusammenstelllen wo die Stunden für den jeweils Nutzer zusammen addiert werden. Meine
Code wäre folgender:
Ausgabe:
Notice: Undefined index: stunden in line 42
Notice: Undefined index: vorname in line 57
Dampf7.85
MaxDampf10.15
Ich habe daraufhin den Debug-Modus aktiviert und mir in der ersten FOR-a-Schleife folgendes
ausgeben lassen: var_dump($a, $nachname, count($rohdaten));
Ausgabe:
int(0) string(6) "Lustig" int(4) int(1) string(6) "Lustig" int(4)
Notice: Undefined index: stunden in G:\Programme\Xampp\htdocs\01.Projekte.xampp\Auswer tungHW\_test.php on line 42
int(2) string(5) "Dampf" int(4) int(3) string(5) "Dampf" int(4)
Notice: Undefined index: vorname in G:\Programme\Xampp\htdocs\01.Projekte.xampp\Auswer tungHW\_test.php on line 57
Dampf7.85
MaxDampf10.15
Es sieht also so aus, als wenn er die FOR-a-Schleife nicht bis 4 durchläuft oder?
Ist meine Heransgehenweise generell richtig oder gibt es für mein Problem auch noch elegantere Lösungen?
durchsuchen und ein neues Array zusammenstelllen wo die Stunden für den jeweils Nutzer zusammen addiert werden. Meine
Code wäre folgender:
Code: Alles auswählen
<?php
//Debugging einschalten
error_reporting(-1);
ini_set('display_errors', true);
$rohdaten = array();
$auswertung = array();
$rohdaten[0]['vorname'] = 'Max';
$rohdaten[0]['nachname'] = 'Lustig';
$rohdaten[0]['stunden'] = 2.30;
$rohdaten[1]['vorname'] = 'Max';
$rohdaten[1]['nachname'] = 'Lustig';
$rohdaten[1]['stunden'] = 1.50;
$rohdaten[2]['vorname'] = 'Hans';
$rohdaten[2]['nachname'] = 'Dampf';
$rohdaten[2]['stunden'] = 5.10;
$rohdaten[3]['vorname'] = 'Hans';
$rohdaten[3]['nachname'] = 'Dampf';
$rohdaten[3]['stunden'] = 1.25;
for($a = 0; $a < count($rohdaten); $a++){
//Prüfen ob Nachname bereits vorhanden
$nachname = $rohdaten[$a]['nachname'];
var_dump($a, $nachname, count($rohdaten));
If ($a == 0) {
//erster Datensatz in Array $auswertung definieren
$auswertung[1]['vorname'] = $rohdaten[$a]['vorname'];
$auswertung[1]['nachname'] = $rohdaten[$a]['nachname'];
$auswertung[1]['stunden'] = $rohdaten[$a]['stunden'];
}
else{
for($b=0; $b < count($auswertung); $b++){
If ($auswertung[$b]['nachname'] = $nachname){
//Nachname wurde in $auswertung gefunden
$auswertung[$b]['stunden'] = $auswertung[$b]['stunden'] + $rohdaten[$a]['stunden'];
}
else{
//Nachname wurde nicht in $auswertung gefunden
//$b = $zaehler + 1;
$auswertung[$b+1]['vorname'] = $rohdaten[$a]['vorname'];
$auswertung[$b+1]['nachname'] = $rohdaten[$a]['nachname'];
$auswertung[$b+1]['stunden'] = $rohdaten[$a]['stunden'];
}
}
}
}
//Datenauswertung ausgeben
for($i=0; $i < count($auswertung); $i++){
echo $auswertung[$i]['vorname'];
echo $auswertung[$i]['nachname'];
echo $auswertung[$i]['stunden'];
echo '<br>';
}
?>
Notice: Undefined index: stunden in line 42
Notice: Undefined index: vorname in line 57
Dampf7.85
MaxDampf10.15
Ich habe daraufhin den Debug-Modus aktiviert und mir in der ersten FOR-a-Schleife folgendes
ausgeben lassen: var_dump($a, $nachname, count($rohdaten));
Ausgabe:
int(0) string(6) "Lustig" int(4) int(1) string(6) "Lustig" int(4)
Notice: Undefined index: stunden in G:\Programme\Xampp\htdocs\01.Projekte.xampp\Auswer tungHW\_test.php on line 42
int(2) string(5) "Dampf" int(4) int(3) string(5) "Dampf" int(4)
Notice: Undefined index: vorname in G:\Programme\Xampp\htdocs\01.Projekte.xampp\Auswer tungHW\_test.php on line 57
Dampf7.85
MaxDampf10.15
Es sieht also so aus, als wenn er die FOR-a-Schleife nicht bis 4 durchläuft oder?
Ist meine Heransgehenweise generell richtig oder gibt es für mein Problem auch noch elegantere Lösungen?