!= or not problem

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • != 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.
    Last edited by petro_0; 08-09-2008, 20:05.
    gruss pedro

  • #2
    ich sehe keinen else-zweig

    peter
    EDIT:
    hui 8.000. schmalle, ich komme
    Last edited by Kropff; 08-09-2008, 19:51.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Comment


    • #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

      Comment


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

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

        oder was meinst du?

        Comment


        • #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

          Comment


          • #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?
            Last edited by TobiaZ; 08-09-2008, 20:23.

            Comment


            • #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

              Comment


              • #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).

                Comment


                • #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{

                        } 
                  Last edited by Koala; 09-09-2008, 01:01.

                  Comment

                  Working...
                  X