PHP größer als usw. (Operatoren)?

... komplette Frage anzeigen

3 Antworten

Ich bin immer recht faul und suche mir die kürzesten Wege, deshalb würde ich das jetzt so lösen:

$unterricht = $u = date("H:i");
$pre = "Jetzt haben wir die ";
$suf = ". Stunde";
echo "$unterricht Uhr";
switch(true)
{
case $u < strtotime("7:15"):
echo "$pre 1$suf";
break;
case $u < strtotime("8:00"):
echo "$pre 1$suf";
break;
case $u < strtotime("8:45"):
echo "Pause";
break;
case $u < strtotime("9:05"):
echo "$pre 3$suf";
break;
...
..
. etc.
}

An Deiner Stelle würde ich aber nochmal die Operatoren überdenken.

Beispiel:

case $u <= strtotime("8:45") && $u >= strtotime("8:00"):
...
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von fiwaldi
08.11.2016, 11:25

es geht noch fauler: siehe meinen anderen Kommentar

1
Kommentar von phphilfe
08.11.2016, 16:13

Ersteinmal danke für die Hilfe, wir haben halt so ein Buch und wir sollen uns ans Buch halten. Haben jetzt gerade erst mit PHP angefangen, daher hab ich noch nicht soviel ahnung. Ich konnte das soweit lösen, jedoch wird nur die erste zahl "erkannt", also ab 11Uhr und nicht z.b um 11:25. 

0

So funktioniert das leider nicht, da du die Zeit mit einen Dezimalwert vergleichst. PHP erkennt 07.15 als Zahl: 7,15.

Du kannst die Zeiten beispielsweise als string angeben und diese dann in eine Zeit umwandeln:

if ($unterricht < strtotime("07:15")) { ...

Beginnt eure erste Unterichtsstunde wirklich vor 07:15 Uhr?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von fiwaldi
08.11.2016, 11:23

auch die letzte Abfrage ist falsch. Statt '<' bitte '>'

Statt in jeder Zeile strtotime aufturufen, wäre es ökonomischer, die Zeit per time oder microtime festzustellen und in einen Dezimalwert zu konvertieren. Dann bei den Abfragen mit einfachen Dezimalen arbeiten (7.15, 8, 9.05, 11.4 ...usw)

1

Was meinst du genau? 

Also um genau 07.15 soll immer noch "Jetzt haben wir die 1. Stunde" ausgegeben werden? Dann mach aus dem < doch einfach ein <=. 

Oder wo liegt das Problem?

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?