while-schleife mit 2 Bediengungen...
Peter
- php
hallo,
an sich hört sich das problem sehr trivial an und genauso trivial meinte ich es auch lösen zu können...
es geht um eine while-schleife mit 2 bediengungen, diese soll so lange durchlaufen werden bis BEIDE Bediengungen erfüllt sind sind, also in der art
while($x!=$y OR $a!=$b)
{
...
}
nun soll diese Schleife so lange durchlaufen werden bis also x==y und a==b ist..aber so wie oben geschrieben funktioniert das nicht, ich habe es sowhol mit AND als auch mit OR versucht, es wird immer entweder nur bei einer erfüllten Bedingung abgebrochen oder aber ich erhalte eine endloschleife...
weiß jemand eine workaround oder eine Lösung dafür ? Oder sitze ich gerade nur auf der leitung ?
Gruss
Peter
while($x!=$y OR $a!=$b)
{
...
}
urg
\\
while (($x != $y) && ($a != $b)) { ... }
///
ODER:
\\
while (($x != $y) and ($a != $b)) { ... }
///
die inneren Klammern kann man sich auch sparen, dienen lediglich der Übersichtlichkeit.
Die zweite Variante ist prinzipiell vorzuziehen! Leider sind die beiden Varianten nicht hundertprozentig äquivalent.
Siehe: http://fr3.php.net/manual/en/language.operators.logical.php
Gruß,
KonRad -
yo,
while (($x != $y) && ($a != $b)) { ... }
die inneren Klammern kann man sich auch sparen, dienen lediglich der Übersichtlichkeit.
wenn man das tut, ist das dann nicht genau das gleiche, was er schon probiert hat ? und sollte es nicht ein logischer OR Operator sein, anstelle des AND ?
Ilja
Hallo,
while (($x != $y) && ($a != $b)) { ... }
die inneren Klammern kann man sich auch sparen, dienen lediglich der Übersichtlichkeit.
wenn man das tut, ist das dann nicht genau das gleiche, was er schon probiert hat ?
nein, PHP unterscheidet Groß- und Kleinschreibung. Er hat "AND" und "OR" verwent, es wird aber "and" und "or" benötigt.
und sollte es nicht ein logischer OR Operator sein, anstelle des AND
Wie kommst du darauf? Es sollen doch beide Bedingungen erfüllt werden, das ist logisch ein "und", kein "oder".
Gruß,
KonRad -
yo,
nein, PHP unterscheidet Groß- und Kleinschreibung. Er hat "AND" und "OR" verwent, es wird aber "and" und "or" benötigt.
das wäre mir neu, dass php case sensitive bei den schlüsselwörtern ist. bei namen von variablen will ich das glauben.
Wie kommst du darauf? Es sollen doch beide Bedingungen erfüllt werden, das ist logisch ein "und", kein "oder".
nein, er will die schleife solange durchlaufen, solange nur ein vergleich true ist oder keiner. und das ensprticht dem logischen oder. sind beide vergleiche true, will er eben nicht mehr in die schleife rein.
Ilja
yo,
nein, PHP unterscheidet Groß- und Kleinschreibung. Er hat "AND" und "OR" verwent, es wird aber "and" und "or" benötigt.
das wäre mir neu, dass php case sensitive bei den schlüsselwörtern ist. bei namen von variablen will ich das glauben.
Ack. Komische Regelung ... ist aber praktisch!
Wie kommst du darauf? Es sollen doch beide Bedingungen erfüllt werden, das ist logisch ein "und", kein "oder".
nein, er will die schleife solange durchlaufen, solange nur ein vergleich true ist oder keiner. und das ensprticht dem logischen oder. sind beide vergleiche true, will er eben nicht mehr in die schleife rein.
Ach so, aber dann braucht er was _ganz_ anderes. Oder bringt da auch nicht. Was er braucht ist:
while(!(bedingung1 And bedingung2)) {}
also eine Negation.
Gruß,
KonRad -
yo,
Ach so, aber dann braucht er was _ganz_ anderes. Oder bringt da auch nicht. Was er braucht ist:
while(!(bedingung1 And bedingung2)) {}
das sollte meiner meinung nach gehen, ist aber auch logisch das gleiche, was er versucht hat.
Ilja
while(!(bedingung1 And bedingung2)) {}
das sollte meiner meinung nach gehen, ist aber auch logisch das gleiche, was er versucht hat.
Warte mal, du willst mir erzählen,
a Or b
sei logisch das selbe wie
Not (a And b)
?
Nein. Wie kommst du denn darauf? Vergleiche doch mal die Wertetabellen:
a Or b: Not (a And b):
| 1 | 0 | 1 | 0
----------- -----------
1 | 1 | 1 1 | 0 | 1
0 | 1 | 0 0 | 1 | 1
wie du siehst, haben die beiden nicht viel gemeinsam.
Gruß,
KonRad -
yo,
Warte mal, du willst mir erzählen, a Or b
sei logisch das selbe wie Not (a And b)
nein, $x!=$y OR $a!=$b entspricht !($x==$y AND $a==$b) oder in deiner schreibweise !a OR !b enspricht !(a AND b)
Ilja