kasimo93: Abkürzung für OR

Hi,

gibt es hierfür einen kürzeren Weg?
bin grade dabei PHP zu lernen und brauche dies für meine Funktion.

if($_GET['classid'] == 1 OR $_GET['classid'] == 2 OR $_GET['classid'] == 3)

  1. Guten Tag,

    Hi,

    gibt es hierfür einen kürzeren Weg?
    bin grade dabei PHP zu lernen und brauche dies für meine Funktion.

    if($_GET['classid'] == 1 OR $_GET['classid'] == 2 OR $_GET['classid'] == 3)

    Die Werte rechts des (typunsicheren) Gleichheitsoperators ergeben zusammen eine Menge an Werten. Du willst nun überprüfen, ob der Wert von $_GET['classid' in dieser Menge enthalten ist. Mengen werden in PHP üblicherweise in Arrays abgelegt. Prüfen, ob ein Wert in einem Array enthalten ist, kannst du mit der Funktion in_array() prüfen.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
  2. Guten Tag,

    gibt es hierfür einen kürzeren Weg?
    bin grade dabei PHP zu lernen und brauche dies für meine Funktion.

    es reicht im Übrigen auch, wenn du deine Frage ein mal stellst.

    Gruß
    Christoph Jeschke

    --
    Zend Certified Engineer
    Certified Urchin Admin
    1. Guten Tag,
      es reicht im Übrigen auch, wenn du deine Frage ein mal stellst.

      Gruß
      Christoph Jeschke

      Darüber weiß ich natürlich bescheid. Hatte beim ersten Betirag das Gefühl, dass etwas nicht funktioniert hat.
      Danke

  3. @@kasimo93:

    nuqneH

    gibt es hierfür einen kürzeren Weg?

    switch mit fall thru, i.e. ohne break:

    switch($_GET['classid'])  
    {  
      case 1:  
      case 2:  
      case 3: echo "1, 2 oder 3";  
    }
    

    Qapla'

    --
    Bildung lässt sich nicht downloaden. (Günther Jauch)
    1. @@kasimo93:

      nuqneH

      »» gibt es hierfür einen kürzeren Weg?

      switch mit fall thru, i.e. ohne break:

      switch($_GET['classid'])

      {
        case 1:
        case 2:
        case 3: echo "1, 2 oder 3";
      }

      
      >   
      > Qapla'  
        
      Hallo.  
      die Idee mit der switch-anweisung ist natürlich generell gut, danke dafür.  
      Ich hatte eigentlich gehofft, dass es so etwas wie dies hier gibt:  
        
      if(1 <= $\_GET['classid'] <= 7)
      
      1. Hallo.
        die Idee mit der switch-anweisung ist natürlich generell gut, danke dafür.
        Ich hatte eigentlich gehofft, dass es so etwas wie dies hier gibt:

        if(1 <= $_GET['classid'] <= 7)

        Ich habe jetzt folgenden Code in Verwendung:
        if(isset($_GET['classid']) AND $_GET['classid'] <= 7 AND $_GET['classid'] >= 1)

        ....und der geht auch. Leider funktioniert der vorher von mir genannte Coe nicht >_<

        1. Hi,

          if(1 <= $_GET['classid'] <= 7)

          Ich habe jetzt folgenden Code in Verwendung:
          if(isset($_GET['classid']) AND $_GET['classid'] <= 7 AND $_GET['classid'] >= 1)

          ....und der geht auch. Leider funktioniert der vorher von mir genannte Coe nicht >_<

          Das liegt daran, dass die Syntax der Sprache PHP definierten Umfang hat, und nicht deiner Phantasie unterliegt.

          MfG ChrisB

          --
          Light travels faster than sound - that's why most people appear bright until you hear them speak.
          1. Hi,
            Das liegt daran, dass die Syntax der Sprache PHP definierten Umfang hat, und nicht deiner Phantasie unterliegt.

            MfG ChrisB

            ich phantasiere gerne.
            Danke für den Hinweis, dass meine Phantasie nicht der Norm entspricht.

            Ich werde den Code nehmen, den ich bisher habe.

      2. Hi Kasimo,

        Ich hatte eigentlich gehofft, dass es so etwas wie dies hier gibt:

        if(1 <= $_GET['classid'] <= 7)

        Vergleichsoperatoren in PHP vergleichen genau zwei Ausdruecke und geben true oder false zurueck.

        Dass obiges nicht funktioniert, liegt daran, dass der Operator "<=" keine Assoziativitaet hat.
        Und das aus gutem Grund - anderenfalls wuerde, etwa bei Linksassoziativitaet, der rechte Operator den vom linken zurueckgegebenen Wert true/false mit 7 vergleichen. true wuerde zu 1 und false zu 0 gecastet, und Deine Bedingung waere in jedem Falle erfuellt, da 1 und 0 kleiner als 7 sind. Ein Ausdruck wie

        (0 <= 10 <= 3)

        wuerde (mit jeder Assoziativitaet - rechts oder links) true ergeben - und das waere wohl kaum das, was Du Dir erhoffst.

        Die Interpretation der Zeile im Sinne der mathematischen Kurzschreibweise ist hoechst informal, da sind es zwei unabhaengige Vergleiche, sie waeren etwa der Klammerung (a <= [ b ) <= c] gemaess. Das widerspricht konzeptionell jeder mir bekannten Programmiersprache.

        viele Gruesse,
        der Bademeister

        1. Hallo,

          (0 <= 10 <= 3)

          Die Interpretation der Zeile im Sinne der mathematischen Kurzschreibweise ist hoechst informal, da sind es zwei unabhaengige Vergleiche, sie waeren etwa der Klammerung (a <= [ b ) <= c] gemaess. Das widerspricht konzeptionell jeder mir bekannten Programmiersprache.

          es gibt in SQL den BETWEEN-AND-Operator, ein Beispiel:

          SELECT  
              foo  
          FROM  
              bar  
          WHERE  
              baz BETWEEN 0 AND 3  
          
          

          Freundliche Grüße

          Vinzenz

          1. Hi Vinzenz,

            es gibt in SQL den BETWEEN-AND-Operator

            stimmt (auch wenn SQL nun keine Programmiersprache ist). Aber das ist _ein_ ternaerer Operator. Das Problem eines Ausdrucks (a <= b <= c) ist ja, dass er zwei Operatoren hat, man aber ein einziges Ergebnis moechte. Daher muss PHP sie entweder verschachtelt ausfuehren, was aber eben nicht das liefern wuerde, was man moechte, oder raten, dass die beiden Ausgaben der Operatoren mit "and" verknuepft werden sollen. PHP ist vielen ja schon zu "intelligent" in Bezug auf Variablen und Typecasting - es sollte jetzt nicht auch noch mit Hellsehen anfangen ;-)

            Solche Operatoren wie BETWEEN...AND und IN wuerden aber PHP auch gut tun, wie ich finde - in diesem Thema hat SQL PHP was voraus.

            Viele Gruesse,
            der Bademeister