Das ist so seltsam, muss ein Tippfehler sein, den ich nicht finden kann!
PHP if: findet Datum von jun, aber nicht aug
Zuerst erhalte ich Daten von mySql und platziere sie in einem PHP-Array.
Dann mache ich ein var-Dump zu sehen, was ich habe:
var_dump($stmt->fetchAll());
ich jetzt se Ergebnis:
[5341]=> array(2) {
["datum"]=> string(19) "2015-07-04 06:47:50"
["usag"]=> string(3) "avf"
}
[5342]=> array(2) {
["datum"]=> string(19) "2015-08-03 13:42:15"
["usag"]=> string(3) "avf"
}
Also, ich von beiden Monaten 07 & 08 zur Folge haben konnte!
Jetzt möchte ich Schleife alle Ergebnisse warf und es in einem arrangierten Array platzieren.
Ich möchte es nach Jahr, und nach Monat, und einfach das Ergebnis zählen.
while($row = $stmt->fetch()){
//Check if thisYear
if(substr($row['datum'], 0, 4) == $thisYear){
//Check if Jan
if(substr($row['datum'], 5, 2) == 01){
$totalElementCount[$thisYear]['jan']++;
}
//Check if Feb
elseif(substr($row['datum'], 5, 2) == 02){
$totalElementCount[$thisYear]['feb']++;
}
//Check if Mar
elseif(substr($row['datum'], 5, 2) == 03){
$totalElementCount[$thisYear]['mar']++;
}
//Check if Apr
elseif(substr($row['datum'], 5, 2) == 04){
$totalElementCount[$thisYear]['apr']++;
}
//Check if Maj
elseif(substr($row['datum'], 5, 2) == 05){
$totalElementCount[$thisYear]['maj']++;
}
//Check if Jun
elseif(substr($row['datum'], 5, 2) == 06){
$totalElementCount[$thisYear]['jun']++;
}
//Check if Jul
elseif(substr($row['datum'], 5, 2) == 07){
$totalElementCount[$thisYear]['jul']++;
}
//Check if Aug
elseif(substr($row['datum'], 5, 2) == 08){
$totalElementCount[$thisYear]['aug']++;
}
//Check if Sep
elseif(substr($row['datum'], 5, 2) == 09){
$totalElementCount[$thisYear]['sep']++;
}
//Check if Okt
elseif(substr($row['datum'], 5, 2) == 10){
$totalElementCount[$thisYear]['okt']++;
}
//Check if Nov
elseif(substr($row['datum'], 5, 2) == 11){
$totalElementCount[$thisYear]['nov']++;
}
//Check if Dec
elseif(substr($row['datum'], 5, 2) == 12){
$totalElementCount[$thisYear]['dec']++;
}
}//if thisYear
//Check if prevYear
elseif(substr($row['datum'], 0, 4) == $prevYear){
//Check if Jan
if(substr($row['datum'], 5, 2) == 01){
$totalElementCount[$prevYear]['jan']++;
}
//Check if Feb
elseif(substr($row['datum'], 5, 2) == 02){
$totalElementCount[$prevYear]['feb']++;
}
//Check if Mar
elseif(substr($row['datum'], 5, 2) == 03){
$totalElementCount[$prevYear]['mar']++;
}
//Check if Apr
elseif(substr($row['datum'], 5, 2) == 04){
$totalElementCount[$prevYear]['apr']++;
}
//Check if Maj
elseif(substr($row['datum'], 5, 2) == 05){
$totalElementCount[$prevYear]['maj']++;
}
//Check if Jun
elseif(substr($row['datum'], 5, 2) == 06){
$totalElementCount[$prevYear]['jun']++;
}
//Check if Jul
elseif(substr($row['datum'], 5, 2) == 07){
$totalElementCount[$prevYear]['jul']++;
}
//Check if Aug
elseif(substr($row['datum'], 5, 2) == 08){
$totalElementCount[$prevYear]['aug']++;
}
//Check if Sep
elseif(substr($row['datum'], 5, 2) == 09){
$totalElementCount[$prevYear]['sep']++;
}
//Check if Okt
elseif(substr($row['datum'], 5, 2) == 10){
$totalElementCount[$prevYear]['okt']++;
}
//Check if Nov
elseif(substr($row['datum'], 5, 2) == 11){
$totalElementCount[$prevYear]['nov']++;
}
//Check if Dec
elseif(substr($row['datum'], 5, 2) == 12){
$totalElementCount[$prevYear]['dec']++;
}
}//if prevYear
} //while
Wenn Schleife finnished i das andere tun: var_dump($totalElementCount);
an sich, wenn der Code korrekt funktioniert. Aber irgendwie 2015-08 & 2015-09 fehlt!
WARUM?
array(2) {
[2015]=>
array(10) {
["jan"]=>
int(240)
["feb"]=>
int(821)
["mar"]=>
int(1190)
["apr"]=>
int(1046)
["maj"]=>
int(892)
["jun"]=>
int(1036)
["jul"]=>
int(117)
["okt"]=>
int(1246)
["nov"]=>
int(1035)
["dec"]=>
int(697)
}
Lieber mir .... verwenden so etwas wie '$ totalElementCount [$ thisYear] [strtolower (Datum ('M', (strtotime ($ row [ 'Datum']))]] 'all diese' if' Tests für jeden einzelnen Monat zu eliminieren –
Und Ihr Problem ist '08' und' 09' in Ihren Vergleichen .... Zahlen (wenn Sie Stringwise statt mit '' 08'' und ''09'' wäre ok) mit einer führenden' 0 'sind __oktal__, und' 08' und '09' sind ungültige Oktalwerte und werden als' 0' behandelt. –
@MarkBaker Ich weiß, dass es einen besseren Weg geben muss Eine For-Schleife, aber das ist über meinem Versprechen: D Sie können mir gerne eine Bette zeigen r Weg :) –