time()
dALoL
- php
0 Cheatah0 Tom0 dedlfix0 KraKi(noAuth)0 Mathias Brodala0 KraKi
0 dedlfix
Hi all,
Ich vergleiche Werte aus der Funktion time.
If ($a < $b OR $a > $c)
echo $ERROR;
So dies ist die Abfrage, welche mir Problem macht.
Ich falle immer in den error rein obwohl:
$a = 1076685737
$b = 1076685722
$c = 1132142405
$a ist somit NICHT kleiner als $b
UND
$a ist NICHT grösser als $c
Weshalb fällt er immer in das true rein? Bin total confused...
Danke & Gruess
dALoL
Hi,
Ich vergleiche Werte aus der Funktion time.
If ($a < $b OR $a > $c)
soso.
So dies ist die Abfrage, welche mir Problem macht.
Ich falle immer in den error rein obwohl:
$a = 1076685737
$b = 1076685722
$c = 1132142405
Und wo siehst Du bei dem Problem einen Zusammenhang zu time()? Ändert es sich, wenn Du die Zahlenwerte nicht austime() ermittelst, sondern irgendwo anders herholst?
Weshalb fällt er immer in das true rein? Bin total confused...
Wegen der Operator-Rangfolge. Worauf bezieht sich Dein "OR"?
Cheatah
Hello,
Ich vergleiche Werte aus der Funktion time.
If ($a < $b OR $a > $c)
echo $ERROR;
1. Mindestens zum Lernen Klammern setzen
2. http://www.php.net/manual/en/language.operators.php durcharbeiten
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
echo $begrüßung;
$a = 1076685737
$b = 1076685722
$c = 1132142405
If ($a < $b OR $a > $c)
echo $ERROR;$a ist somit NICHT kleiner als $b
UND
$a ist NICHT grösser als $c
Weshalb fällt er immer in das true rein? Bin total confused...
Das Problem kann ich mit den gegebenen Werten nicht nachvollziehen. Die Teilausdrücke $a < $b und $a > $c und demzufolge auch der Gesamtausdruck ergeben false. Die erwähnte Operatorenrangfolge ist auch nicht die Ursache, denn OR hat eine niedrigere Priorität als ein Vergleich.
Ich kann nur den allgemeinen Hinweis geben: Überprüfe die Werte und Ergebnisse der (Teil-)Ausdrücke mittels var_dump(). Ebenfalls nicht schaden kann ein auf E_ALL gestelltes error_reporting.
echo "$verabschiedung $name";
If ($a < $b OR $a > $c)
echo $ERROR;$a ist somit NICHT kleiner als $b
UND
$a ist NICHT grösser als $c
Weshalb fällt er immer in das true rein? Bin total confused...Das Problem kann ich mit den gegebenen Werten nicht nachvollziehen. Die Teilausdrücke $a < $b und $a > $c und demzufolge auch der Gesamtausdruck ergeben false. Die erwähnte Operatorenrangfolge ist auch nicht die Ursache, denn OR hat eine niedrigere Priorität als ein Vergleich.
Tja, aber die geschweiften Klammern sollte man schon setzen...
If ($a < $b OR $a > $c)
echo $ERROR;
Heißt doch das selbe wie
If ($a < $b OR $a > $c) {}
echo $ERROR;
Oder menschlich: "Wenn $a kleiner $b oder $b größer $c dann tue nichts (sonst tue auch nichts). Anschließend gib den Fehler aus."
If (($a < $b) OR ($a > $c)) {
echo $ERROR;
}
wäre besser.
Hallo KraKi(noAuth).
Tja, aber die geschweiften Klammern sollte man schon setzen...
Oder besser erst einmal die Syntax studieren.
If ($a < $b OR $a > $c)
echo $ERROR;
Heißt doch das selbe wie
If ($a < $b OR $a > $c) {}
echo $ERROR;
Nein. Wenn die geschweiften Klammern weggelassen werden, wird grundsätzlich das erste darauf folgende Kommando ausgeführt, sofern die Bedingung zutrifft. Es entsprich also folgendem:
~~~php
If ($a < $b OR $a > $c) {
echo $ERROR;
}
(Und ich schreibe es auch fast grundsätzlich so.)
Einen schönen Donnerstag noch.
Gruß, Mathias
Nein. Wenn die geschweiften Klammern weggelassen werden, wird grundsätzlich das erste darauf folgende Kommando ausgeführt, sofern die Bedingung zutrifft.
Hm, ok, dann habe ich das wohl mit einer anderen Sprache verwechselt.
echo $begrüßung;
Tja, aber die geschweiften Klammern sollte man schon setzen...
Dazu besteht kein Zwang. Nur wenn der bedingte Teil mehrere Anweisungen umfasst müssen diese geklammert werden.
If ($a < $b OR $a > $c)
echo $ERROR;
Heißt doch das selbe wie
If ($a < $b OR $a > $c) {}
echo $ERROR;
Nein, das ist weder das selbe noch das gleiche. Im ersten wird das echo in Abhängigkeit der Bedingung ausgeführt. Das zweite hat bei erfüllter Bedingung eine leere Anweisung auszuführen. Und das echo ist eine Anweisung, die auf den bedingten Teil folgt, aber kein Bestandteil dessen ist.
If (($a < $b) OR ($a > $c)) {
echo $ERROR;
}
Das entspricht von seiner Wirkung her exakt der ersten Variante.
Damit haben wir immer noch nicht die Frage geklärt, warum der OP etwas anderes behauptet als sein geposteter Code tatsächlich macht.
echo "$verabschiedung $name";