Bernd: If Bedingung

Moin,

if ($status != "6e623de7c366c92accd2b4a7ee49ad2a" || $status = "602c5602d0a86003a925951b46a012b4" || $status = "5555d1be56a4b410da755026783b4d9e"):

die oben genannte Zeile bedeute doch folgendes:

wenn $status nicht 6e623de7c366c92accd2b4a7ee49ad2a oder 602c5602d0a86003a925951b46a012b4 oder 5555d1be56a4b410da755026783b4d9e ist, dann blende das folgende ein, ansonsten nicht.

Oder denke ich gerade falsch? Derzeit steht in $status der erste Wert und mir wird etwas angezeigt.

  1. Tach!

    if ($status != "6e623de7c366c92accd2b4a7ee49ad2a" || $status = "602c5602d0a86003a925951b46a012b4" || $status = "5555d1be56a4b410da755026783b4d9e"):
    

    Wenn der Status nicht der erste Wert ist, ist die Bedingung bereits erfüllt. Die anderen beiden Teilausdrücke ändern daran nicht mehr. Wenn er hingegen der erste Wert ist, ist die erste Teilbedingung false, die anderen können aber auch nicht mehr true werden.

    dedlfix.

    1. Moin,

      dann muss ich es anders erklären, wenn in $status einer dieser Werte

      • 6e623de7c366c92accd2b4a7ee49ad2a
      • 602c5602d0a86003a925951b46a012b4
      • 5555d1be56a4b410da755026783b4d9e

      ist, soll der folgende Bereich nicht angezeigt werden. Wenn etwas anderes drin steht, dann ja.

      1. @@Bernd

        dann muss ich es anders erklären, wenn in $status einer dieser Werte

        Da gibt’s doch was von RaPHP …

        LLAP 🖖

        --
        “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
        1. Moin,

          Ok, hab es jetzt so umgesetzt

          $nichtAnzeigen = array("07bc9a80a0da7031218f1a9514a327c3",
          								   "8f9bdc964d3b7496587b8161e2c43d1f", 
          								   "904895f93ccb9f1f44479582c9d4bd4e",
          								   "54a556b805869244d18fe0dc0c19c4ce",
          								   "3018babe7d2a1fbeb43c3bae0fcd532f",
          								   "2afeb8b8f86e17862748b6402da01db6");
          
          if (in_array($status, $nichtAnzeigen)):
          // Inhalt
          endif
          

          Das heißt ich muss im array alle Einträge auflisten bei denen ich möchte dass es angezeigt wird. Vielleicht kann ich die irgendwie dynamisch aus der Datenbank in Zukunft auslesen.

          1. Hallo

            Ok, hab es jetzt so umgesetzt

            $nichtAnzeigen = array("07bc9a80a0da7031218f1a9514a327c3",
            								   "8f9bdc964d3b7496587b8161e2c43d1f", 
            								   "904895f93ccb9f1f44479582c9d4bd4e",
            								   "54a556b805869244d18fe0dc0c19c4ce",
            								   "3018babe7d2a1fbeb43c3bae0fcd532f",
            								   "2afeb8b8f86e17862748b6402da01db6");
            
            if (in_array($status, $nichtAnzeigen)):
            // Inhalt
            endif
            

            Das heißt ich muss im array alle Einträge auflisten bei denen ich möchte dass es angezeigt wird. Vielleicht kann ich die irgendwie dynamisch aus der Datenbank in Zukunft auslesen.

            Man kann den Rückgabewert einer Funktion mit dem Ausrufezeichen negieren (if (!in_array())). Mit der Notation !in_array() führst du im Array nur die Werte auf, die nicht zutreffen sollen. Vermutlich ist dieses Array weniger dynamisch als die Liste/das Array der erlaubten Werte.

            Tschö, Auge

            --
            Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
            Toller Dampf voraus von Terry Pratchett
            1. @@Auge

              führst du im Array nur die Werte auf, die nicht zutreffen sollen.
              […] die Liste/das Array der erlaubten Werte.

              Musst du das so schwarz oder weiß sehen? 😉

              LLAP 🖖

              --
              “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
      2. Tach!

        dann muss ich es anders erklären,

        Und genauso anders im Code formulieren

        wenn in $status einer dieser Werte

        • 6e623de7c366c92accd2b4a7ee49ad2a
        • 602c5602d0a86003a925951b46a012b4
        • 5555d1be56a4b410da755026783b4d9e

        ist, soll der folgende Bereich nicht angezeigt werden.

        Erst testen ob der Status einer dieser Werte ist, dann den Ausdruck im komplett negieren.

        if ( ! (x=a || x=b)) {...}

        Statt der Negation kann auch der then- und else-Teil getauscht werden.

        dedlfix.

        1. Hallo @dedlfix,

          Erst testen ob der Status einer dieser Werte ist, dann den Ausdruck im komplett negieren.

          if ( ! (x=a || x=b)) {...}

          Du meinst vermutlich x === a || x === b.

          Viele Grüße
          Robert

          1. @@Robert B.

            if ( ! (x=a || x=b)) {...}

            Du meinst vermutlich x === a || x === b.

            Im Rahmen der von dedlfix angegebenen Sprache (nämlich gar keiner; also Pseudocode) war das einfache = durchaus korrekt. 😜

            LLAP 🖖

            --
            “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
            1. Hallo @Gunnar Bittersmann,

              Im Rahmen der von dedlfix angegebenen Sprache (nämlich gar keiner; also Pseudocode) war das einfache = durchaus korrekt. 😜

              bei mir ist der Beitrag mit php getaggt 😜

              Viele Grüße
              Robert

          2. Tach!

            Erst testen ob der Status einer dieser Werte ist, dann den Ausdruck im komplett negieren.

            if ( ! (x=a || x=b)) {...}

            Du meinst vermutlich x === a || x === b.

            Ja, aber eigentlich meinte ich nur == statt ===.

            dedlfix.

            1. Hallo @dedlfix,

              Du meinst vermutlich x === a || x === b.

              Ja, aber eigentlich meinte ich nur == statt ===.

              aus welchem Grund möchtest du eine implizite Typkonvertierung zulassen?

              Viele Grüße
              Robert

              1. Tach!

                Du meinst vermutlich x === a || x === b.

                Ja, aber eigentlich meinte ich nur == statt ===.

                aus welchem Grund möchtest du eine implizite Typkonvertierung zulassen?

                Gegenfrage, warum muss es ein typsicherer Vergleich sein? Wenn $status nichts anderes als ein String sein kann, passiert auch keine Typumwandlung, die unterbunden werden müsste.

                dedlfix.

                1. Hallo @dedlfix,

                  aus welchem Grund möchtest du eine implizite Typkonvertierung zulassen?

                  Gegenfrage, warum muss es ein typsicherer Vergleich sein? Wenn $status nichts anderes als ein String sein kann, passiert auch keine Typumwandlung, die unterbunden werden müsste.

                  Die Strings enthalten Ziffern und Buchstaben und können eventuell mit einem gewissen Restrisiko auch wie Zahlen aussehen, z.B. "0123456…" ← da hätte ich sogar die Umwandlung in eine Oktalzahl.

                  Viele Grüße
                  Robert

                  1. Tach!

                    Die Strings enthalten Ziffern und Buchstaben und können eventuell mit einem gewissen Restrisiko auch wie Zahlen aussehen, z.B. "0123456…" ← da hätte ich sogar die Umwandlung in eine Oktalzahl.

                    Nein, wenn keiner der beteiligten Operanden des Ausdrucks ein numerischer Typ ist, findet keine Umwandung in Zahlen statt.

                    dedlfix.

                    1. Moin @dedlfix,

                      Nein, wenn keiner der beteiligten Operanden des Ausdrucks ein numerischer Typ ist, findet keine Umwandung in Zahlen statt.

                      Kannst du das garantieren? PHP ist keine typsichere Sprache.

                      Viele Grüße
                      Robert

                      1. Tach!

                        Nein, wenn keiner der beteiligten Operanden des Ausdrucks ein numerischer Typ ist, findet keine Umwandung in Zahlen statt.

                        Kannst du das garantieren? PHP ist keine typsichere Sprache.

                        Das garantiert PHP. Typsicher heißt nicht, dass es nach Belieben Typen ändert. Die Regeln, wann was passiert sind definiert. Eine Umwandlung in eine Zahl findet nur dann statt, wenn eine Situation einen Zahlenwert benötigt. Vergleiche zwischen zwei Strings gehören nicht dazu.

                        dedlfix.

                2. @@dedlfix

                  Gegenfrage, warum muss es ein typsicherer Vergleich sein?

                  Weil man immer™ typsicher vergleichen sollte, um sich diese Frage gar nicht stellen zu müssen‽

                  LLAP 🖖

                  --
                  “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
        2. @@dedlfix

          wenn in $status einer dieser Werte

          • 6e623de7c366c92accd2b4a7ee49ad2a
          • 602c5602d0a86003a925951b46a012b4
          • 5555d1be56a4b410da755026783b4d9e

          ist, soll der folgende Bereich nicht angezeigt werden.

          Erst testen ob der Status einer dieser Werte ist, dann den Ausdruck im komplett negieren.

          if ( ! (x=a || x=b)) {...}

          Ich hätte jetzt anders gedacht: Wenn der Status verschieden von allen vorgegebenen Werten ist …

          if (x ≠ a && x ≠ b) {...}

          Hallo de Morgan, da bist du ja wieder.

          Statt der …

          … einzelnen Abfragen kann man a und b auch in einen Sack stecken.

          LLAP 🖖

          --
          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    2. Tach!

      if ($status != "6e623de7c366c92accd2b4a7ee49ad2a" || $status = "602c5602d0a86003a925951b46a012b4" || $status = "5555d1be56a4b410da755026783b4d9e"):
      

      Wenn der Status nicht der erste Wert ist, ist die Bedingung bereits erfüllt. Die anderen beiden Teilausdrücke ändern daran nicht mehr. Wenn er hingegen der erste Wert ist, ist die erste Teilbedingung false, die anderen können aber auch nicht mehr true werden.

      Die "anderen Beiden" sind Zuweisungen. Und jede der beiden ist immer true. MfG

      1. Hallo pl,

        autsch. Gut gesehen.

        Rolf

        --
        sumpsi - posui - clusi
        1. Tach!

          autsch. Gut gesehen.

          War zum Zeitpunkt seines Postings aber bereits bekannt.

          dedlfix.

        2. hi

          autsch. Gut gesehen.

          Es ist ein systematischer Fehler den man normalerweise gar nicht sieht 😉

          1. Hallo,

            Es ist ein systematischer Fehler den man normalerweise gar nicht sieht 😉

            Wenn du hier Code + Augen + Gehirn als System ansiehst, dann ja. Ansonsten versteht man unter systematischem Fehler etwas andres...

            Gruß
            Kalk

            1. Hallo,

              Es ist ein systematischer Fehler den man normalerweise gar nicht sieht 😉

              Wenn du hier Code + Augen + Gehirn als System ansiehst, dann ja. Ansonsten versteht man unter systematischem Fehler etwas andres...

              Ja? Was denn? MfG

              1. Hallo,

                Ja? Was denn? MfG

                Service

                Gruß
                Kalk

                1. Hallo,

                  Ja? Was denn? MfG

                  Service

                  Genau. Obwohl man das auch kürzer formulieren kann: Ein systematischer Fehler wird nicht als Fehler erkannt weil man denkt es richtig gemacht zu haben.

                  Wenn also jemand zweimal hintereinander mit x=y wissen will ob x gleich y ist, kann man davon ausgehen daß er einen systematischen Fehler begeht weil es wenig wahrscheinlich ist, einen Tippfehler der zufällig ist, zweimal hintereinander gleichermaßen zu begehen. MfG

                  1. Hallo pl,

                    Ein systematischer Fehler wird nicht als Fehler erkannt weil man denkt es richtig gemacht zu haben.

                    Sicher nicht. Ein systematischer Fehler ist einer um dessen Existenz man weiß, den man aber mit den zur Verfügung stehenden Mitteln nicht verkleinern oder gar verhindern kann.

                    Bis demnächst
                    Matthias

                    --
                    Rosen sind rot.
                    1. hi

                      Ein systematischer Fehler wird nicht als Fehler erkannt weil man denkt es richtig gemacht zu haben.

                      Sicher nicht. Ein systematischer Fehler ist einer um dessen Existenz man weiß, den man aber mit den zur Verfügung stehenden Mitteln nicht verkleinern oder gar verhindern kann.

                      Das klingt nach höherer Gewalt. Daran kann man glauben 😉

                      Oder auch nicht. MfG

                      1. Hallo,

                        Daran kann man glauben 😉

                        Ohja! Lass uns die Religion auch noch mit abhandeln…

                        Gruß
                        Kalk

                        1. @@Tabellenkalk

                          Daran kann man glauben 😉

                          Ohja! Lass uns die Religion auch noch mit abhandeln…

                          “Religion is a culture of faith; science is a culture of doubt.” —Richard Feynman

                          LLAP 🖖

                          --
                          “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
                        2. Hallo,

                          Daran kann man glauben 😉

                          Ohja! Lass uns die Religion auch noch mit abhandeln…

                          Da musst Du Dich bei Wikipedia beschweren, weil die es in ihrer Rückständigkeit einfach nicht fertig bringen, Wissenschaft und Kirche zu trennen. Von daher kommt nämlich dieser Müll. MfG

                      2. Moin pl,

                        ein Gliedermaßstab mit metrischer Einteilung („Zollstock“), der etwas „nachgeht“, ist keine höhere Gewalt, aber ein systematischer Fehler.

                        Viele Grüße
                        Robert

                        1. Hallo Robert B.,

                          ein Gliedermaßstab mit metrischer Einteilung („Zollstock“), der etwas „nachgeht“, ist keine höhere Gewalt, aber ein systematischer Fehler.

                          Das würde ich eher in die Rubrik Messfehler (zufällige Fehler) einordnen. Ein systematischer Fehler wäre die Bestimmung eines elektrischen Widerstands durch Messung von Spannung und Stromstärke mit Messinstrumenten im Stromkreis.

                          Bis demnächst
                          Matthias

                          --
                          Rosen sind rot.
                          1. Hallo Matthias Apsel,

                            Ein systematischer Fehler wäre die Bestimmung eines elektrischen Widerstands durch Messung von Spannung und Stromstärke mit Messinstrumenten im Stromkreis.

                            oder ganz klassisch die Vernachlässigung von Reibung.

                            Bis demnächst
                            Matthias

                            --
                            Rosen sind rot.
                          2. @@Matthias Apsel

                            ein Gliedermaßstab mit metrischer Einteilung („Zollstock“), der etwas „nachgeht“, ist keine höhere Gewalt, aber ein systematischer Fehler.

                            Das würde ich eher in die Rubrik Messfehler (zufällige Fehler) einordnen.

                            Nein, wenn die Skala des Zollstocks nicht genau ist, ist das ein systematischer Fehler. Bspw. wenn der Abstand zwischen zwei Zentimeterstrichen nicht 1.00 cm beträgt, sondern jeweils 1.02 cm. Oder wenn am Anfang ein Stückchen fehlt und der erste „Zentimeter“ nur 0.93 cm lang ist.

                            LLAP 🖖

                            --
                            “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
                          3. Hallo @Matthias Apsel,

                            der Zollstock geht aber nicht zufällig falsch, sondern ist entweder zu kurz oder zu lang.

                            Dein Beispiel stimmt daher auch.

                            Viele Grüße
                            Robert

                    2. Moin,

                      Ein systematischer Fehler wird nicht als Fehler erkannt weil man denkt es richtig gemacht zu haben.

                      Sicher nicht. Ein systematischer Fehler ist einer um dessen Existenz man weiß, den man aber mit den zur Verfügung stehenden Mitteln nicht verkleinern oder gar verhindern kann.

                      Systematisch heißt ein Fehler nicht weil er im System steckt sondern weil er systematisch begangen wird. MfG

                      1. Hallo pl,

                        Systematisch heißt ein Fehler nicht weil er im System steckt sondern weil er systematisch begangen wird.

                        Fehler, die systematisch begangen werden, sind dumme[1] Fehler. Dumme Fehler sind vermeidbar.

                        Bis demnächst
                        Matthias

                        --
                        Rosen sind rot.

                        1. Manchmal auch einfach, weil man es nicht besser weiß. In dem Fall sind sie ohne äußeren Einfluss (jemand sagt dir, wie es richtig geht) natürlich nicht vermeidbar. ↩︎

                        1. Hallo,

                          Systematisch heißt ein Fehler nicht weil er im System steckt sondern weil er systematisch begangen wird.

                          Fehler, die systematisch begangen werden, sind dumme[1] Fehler. Dumme Fehler sind vermeidbar.

                          Das ist einfach nur dumm was Du hier schreibst. Gerade beim Entwicklen ist nämlich das Verständnis um diese Thematik wichtig und ja, systematische Fehler machen nicht nur die Dummen. MfG


                          1. Manchmal auch einfach, weil man es nicht besser weiß. ↩︎

                          1. Hallo pl,

                            "Du bist dumm" ist ein persönlicher Angriff.

                            "Da hast Du was Dummes gemacht" ist eine Kritik an einer einzelnen Handlung.

                            Das gleichzusetzen ist eine Dummheit.

                            Und ein systematischer Fehler ist auch meiner Meinung nach einer, den man durchgängig mangels besserem Wissen begangen hat. Z.B. Pointer konsequent nicht auf null abzufragen. Oder konsequent den Kontextwechsel zu vernachlässigen.

                            Rolf

                            --
                            sumpsi - posui - clusi
  2. Moin Bernd,

    if ($status != "6e623de7c366c92accd2b4a7ee49ad2a" || $status = "602c5602d0a86003a925951b46a012b4" || $status = "5555d1be56a4b410da755026783b4d9e"):
    

    die oben genannte Zeile bedeute doch folgendes:

    wenn $status nicht 6e623de7c366c92accd2b4a7ee49ad2a oder 602c5602d0a86003a925951b46a012b4 oder 5555d1be56a4b410da755026783b4d9e ist, dann blende das folgende ein, ansonsten nicht.

    Nein. Diese Zeile bedeutet: Wenn $status nicht 6e623de7c366c92accd2b4a7ee49ad2a oder das Ergebnis der Zuweisung $status = "602c5602d0a86003a925951b46a012b4" wahr oder das Ergebnis der Zuweisung $status = "5555d1be56a4b410da755026783b4d9e" wahr ist. Die beiden Zuweisungen dürften meines Wissens einen wahren Wert ergeben.

    Derzeit steht in $status der erste Wert und mir wird etwas angezeigt.

    Ja klar, denn die erste Abfrage ist nicht erfüllt, also wird die nächste geprüft und die ist in dieser Form immer wahr.

    Viele Grüße
    Robert

    1. Tach!

      if ($status != "6e623de7c366c92accd2b4a7ee49ad2a" || $status = "602c5602d0a86003a925951b46a012b4" || $status = "5555d1be56a4b410da755026783b4d9e"):
      

      Diese Zeile bedeutet: Wenn $status nicht 6e623de7c366c92accd2b4a7ee49ad2a oder das Ergebnis der Zuweisung $status = "602c5602d0a86003a925951b46a012b4" wahr oder das Ergebnis der Zuweisung $status = "5555d1be56a4b410da755026783b4d9e" wahr ist.

      Achja, Zuweisung statt Vergleich auch noch.

      Die beiden Zuweisungen dürften meines Wissens einen wahren Wert ergeben.

      Das Ergebnis einer Zuweisung ist immer der Wert der Zuweisung. Deswegen funktionieren auch solche Konstrukte wie $a = $b = 42;. Da die Strings nicht leer oder '0' sind, evaluieren die Ausdrücke im booleschen Kontext zu true.

      dedlfix.