Hallo, ich habe ein großes Problem bei der Verarbeitung von mehrdimensionalen Arrays und komme
leider einfach nicht weiter.
Die folgenden Rohdaten sollen ausgewertet werden:
Name | Stunden | Leistung
Lehmann | 120 | Urlaub
Lehmann | 90 | egal
Meier | 30 | Krank
Dabei sollen die Gesamtstunden der Mitarbeiter ermittelt werden, sowie
die Stunden bei Krank und bei Urlaub. Nach der Auswertung soll folgende
Tabelle ausgegeben werden:
Name | StdGes | StUrlaub | StdKrank
Lehmann | 210 | 120 | 0
Meier | 30 | 0 | 30
Das Array welches ausgewertet werden soll liegt in der folgenden Form vor:
array(3) { ["A"]=> string(7) "Lehmann" ["B"]=> float(120) ["C"]=> string(6) "Urlaub"
array(3) { ["A"]=> string(7) "Lehmann" ["B"]=> float(90) ["C"]=> string(4) "egal"
array(3) { ["A"]=> string(5) "Meier" ["B"]=> float(30) ["C"]=> string(5) "Krank"}
Mein Ansatz ist folgender, ich bilde jeweils ein Array $namen, $stunden, $leistung und
packe diese Arrays dann in das Array $auswertung. Das Array $leistung dient zur Prüfung
wie die Stunden summiert werden soll (Fall: Krank oder Urlaub).
Mein Code wäre folgender:
Überall wo ich die Wertzuweisung bei den Arrays machen will kommt die Fehlermeldung:
Warning: Illegal offset type
Ich weiß das dies auf einen falschen Index hindeutet, habe auch schon anderen Sachen getestet:
z.B. $auswertung['Mitarbeiter'] = $name; klappt leider auch nicht...
leider einfach nicht weiter.
Die folgenden Rohdaten sollen ausgewertet werden:
Name | Stunden | Leistung
Lehmann | 120 | Urlaub
Lehmann | 90 | egal
Meier | 30 | Krank
Dabei sollen die Gesamtstunden der Mitarbeiter ermittelt werden, sowie
die Stunden bei Krank und bei Urlaub. Nach der Auswertung soll folgende
Tabelle ausgegeben werden:
Name | StdGes | StUrlaub | StdKrank
Lehmann | 210 | 120 | 0
Meier | 30 | 0 | 30
Das Array welches ausgewertet werden soll liegt in der folgenden Form vor:
array(3) { ["A"]=> string(7) "Lehmann" ["B"]=> float(120) ["C"]=> string(6) "Urlaub"
array(3) { ["A"]=> string(7) "Lehmann" ["B"]=> float(90) ["C"]=> string(4) "egal"
array(3) { ["A"]=> string(5) "Meier" ["B"]=> float(30) ["C"]=> string(5) "Krank"}
Mein Ansatz ist folgender, ich bilde jeweils ein Array $namen, $stunden, $leistung und
packe diese Arrays dann in das Array $auswertung. Das Array $leistung dient zur Prüfung
wie die Stunden summiert werden soll (Fall: Krank oder Urlaub).
Mein Code wäre folgender:
PHP-Code:
$rohdatenEXC = array(); //gesamte Inhalt der Exceldatei als Array speichern
$name = array();
$stunden = array();
$leistung = array();
$Mitarbeiter = array();
$StdGes = array();
$StdUrl = array();
$StdKrk = array();
$auswertung = array($Mitarbeiter, $StdGes, $StdUrl, $StdKrk);
foreach($sheetData as $key => $rohdatenEXC){
$name = $rohdatenEXC['A'];
$stunden = $rohdatenEXC['B'];
$leistung = $rohdatenEXC['C'];
if(!isset($auswertung[$name])){ // Prüfen ob Mitarbeiter noch nicht im Array $auswertung vorhanden ist
$auswertung[$Mitarbeiter] = $name;
$auswertung[$StdGes] = $auswertung[$StdGes] + $stunden; //Gesamtstunden
If ($leistung == "Urlaub"){
$auswertung[$StdUrl] = $auswertung[$StdUrl] + $stunden; //Stunden Urlaub
}
else{
$auswertung[$StdUrl] = 0;
}
If ($leistung == "Krank"){
$auswertung[$StdKrk] = $auswertung[$StdKrk] + $stunden; //Stunden Krank
}
else{
$auswertung[$StdKrk] = 0;
}
}
else { //Mitarbeiter ist bereits im Array $auswertung
$auswertung[$StdGes] = $auswertung[$StdGes] + $stunden; //Gesamtstunden
If ($leistung == "Urlaub"){
$auswertung[$StdUrl] = $auswertung[$StdUrl] + $stunden; //Stunden Urlaub
}
else{
$auswertung[$StdUrl] = 0;
}
If ($leistung == "Krank"){
$auswertung[$StdKrk] = $auswertung[$StdKrk] + $stunden; //Stunden Krank
}
else{
$auswertung[$StdKrk] = 0;
}
}
}
//Tabelle ausgeben:
foreach($auswertung as $key => $value){
echo "<tr>"; // Ausgabe nächste Zeile in Tabelle
echo "<td>" . $value [$Mitarbeiter] . "</td>"; //Mitarbeiter
echo "<td>" . $value [$StdGes] / 60 . "</td>"; //Stunden gesamt
echo "<td>" . $value [$StdUrl] / 60 . "</td>"; //Stunden Urlaub
echo "<td>" . $value [$StdKrk] / 60 . "</td>"; //Stunden Krank
echo "</tr>";
}
Warning: Illegal offset type
Ich weiß das dies auf einen falschen Index hindeutet, habe auch schon anderen Sachen getestet:
z.B. $auswertung['Mitarbeiter'] = $name; klappt leider auch nicht...
Kommentar