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?