!= or not problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • != or not problem

    Guten Abend,

    kann mir mal jemand mit folgendem Code weiter helfen?

    Wieso liefert ein,
    PHP-Code:
    if($array['foo']!='wert1'||$array['foo']!='wert2') {
        echo 
    $gibtszurueck;
    }
    in diesem Fallwenn sich beide Werte unterscheiden immer die if zurück aber nie denn Code darunter?
    else
       echo 
    $gibdaszurueck

    Des weiteren reagiert aber folgender Code genau anders herum.
    Er geht nicht in die if, sondern wendet das zweite echo an?

    PHP-Code:
    if(!($array['foo']=='wert1'||$array['foo']=='wert2') ){
    echo 
    $gibtszurueck;
    }
    else
       echo 
    $gibdaszurueck
    Im ersten Fall ist es doch so, dass $array['foo']=='wert1' ]viell. false leifert und $array['foo']=='wert2'] viell. true.
    Dann ist die if true.

    Wenn ich es aber wie im zweiten Beispiel mache, dann kommt im selben Beispiel viell. false zruück.

    Kann mir das wer erläutern?
    Oder kennt jemand me Internet Seite, wo das erklärt wird?

    Danke.
    Zuletzt geändert von petro_0; 08.09.2008, 21:05.
    gruss pedro

  • #2
    ich sehe keinen else-zweig

    peter
    EDIT:
    hui 8.000. schmalle, ich komme
    Zuletzt geändert von Kropff; 08.09.2008, 20:51.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      if(!(

      so nun is er da.

      ist aber völlig egal, genau so gut könnte es sich hierbei ja um eine funktion handeln und nach dem if kommt meinewegen ein return.

      Mir gehts um das
      PHP-Code:
      if(!( 
      .

      Warum macht das if(!( eine korrekte or entscheidung im SInne von wenn A oder wenn B dann mach was.
      Aber wenn ich if(A || B mach, und eines von beiden ist nur false, dann kommt ja trotzdem true raus.

      Denn if A ist true und || B is false = true.

      Ungefähr klar, was ich meine?
      gruss pedro

      Kommentar


      • #4
        false || false => false
        false || true => true
        true || true => true

        false && false => false
        false && true => false
        true && true => true

        oder was meinst du?

        Kommentar


        • #5
          genau das meine ich....

          genau das meine ich.

          warum ist es so, dass wenn z.b. der erste wert schon "zutrifft", der zweite garnicht mehr abgefragt wird?
          gruss pedro

          Kommentar


          • #6
            Aber wenn ich if(A || B mach, und eines von beiden ist nur false, dann kommt ja trotzdem true raus.
            Ähm, Proleme mit der Logik?


            if(A || B) => Wenn "A zutrifft" oder "B zutrifft".

            Folglich ist die komplette Bedingung true, wenn mindestens eines von beiden (A/B) true ist. logisch, oder?

            EDIT:

            warum ist es so, dass wenn z.b. der erste wert schon "zutrifft", der zweite garnicht mehr abgefragt wird?
            Wozu sollte man den zweiten Wert noch prüfen, wenn längst feststeht, dass die komplette Bedingung in order ist?

            Wenn du dir zwei Spiegeleier braten willst, dann guckst du in den Kühlschrank, sobald du zwei Eier gefunden hast, reicht es dir doch. Oder suchst du dann trotzdem noch den Rest des Kühlschranks ab um noch mehr Eier zu finden?
            Zuletzt geändert von TobiaZ; 08.09.2008, 21:23.

            Kommentar


            • #7
              ja logisch im sinne des erfinders...

              ich wollte eben orpfen, wenn in einem wert entweder der eine oder der andere wert drin steht, dann mach was.

              steht bla drin dann mach was oder wenn blabla drin steht dann mach was.

              wenn das eine oder das andere nicht drin ist, dann mach was anderes...


              wie auch immer, ihr konntest mir ne erklörung liefern, aber alleine hätte ich den sachverhalt nciht so schnell gerafft;o(
              gruss pedro

              Kommentar


              • #8
                ich wollte eben orpfen, wenn in einem wert entweder der eine oder der andere wert drin steht, dann mach was.
                Das nennt man "Exclusives Oder" (XOR).

                Kommentar


                • #9
                  if($array['foo']!='wert1'||$array['foo']!='wert2') {

                  bedeutet übersetzt:

                  wenn foo nicht wert1 ist oder foo nicht wert2 ist.

                  Und diese Bedingung ist immer erfüllt:
                  foo ist auf jeden Fall entweder "nicht wert1" oder "nicht wert2".

                  Also umdrehn:
                  PHP-Code:
                  if($array['foo'] == 'wert1' || $array['foo'] =='wert2') {
                     
                  // entweder wert1 oder wert2
                     // (oder beides, was in diesem Fall aber nicht möglich ist
                     // hier entspricht also OR = XOR (ausschließendes oder)
                     
                  }
                  else{

                        } 
                  Zuletzt geändert von Koala; 09.09.2008, 02:01.

                  Kommentar

                  Lädt...
                  X