Peter: while-schleife mit 2 Bediengungen...

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

  1. 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 -

    --
    "Was Gott zusammengeführt hat ..." :: polithink.org -
    the politicultural e-zine :: http://www.polithink.org
    1. 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

      1. 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 -

        --
        "Was Gott zusammengeführt hat ..." :: polithink.org -
        the politicultural e-zine :: http://www.polithink.org
        1. 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

          1. 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 -

            --
            "Was Gott zusammengeführt hat ..." :: polithink.org -
            the politicultural e-zine :: http://www.polithink.org
            1. 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

              1. 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 -

                --
                "Was Gott zusammengeführt hat ..." :: polithink.org -
                the politicultural e-zine :: http://www.polithink.org
                1. 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