Ankündigung

Einklappen
Keine Ankündigung bisher.

Array vereinfachte IF Abfrage

Einklappen

Neue Werbung 2019

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

  • Array vereinfachte IF Abfrage

    Hallo Zusammen,

    ich habe eine Frage, bzw. komme gerade nicht drauf.

    Gibt es einen Befehl, um folgendes einfacher darzustellen

    if ($_REQUEST['wert1'] || $_REQUEST['wert2'] || $_REQUEST['wert3']){
    //MACHWAS
    }

  • #2
    Ja, verwende das korrekte superglobale Array anstelle von $_REQUEST. Das spart dir bei GET 12 Zeichen, bei POST 9 und bei COOKIE immerhin 3.

    Ansonsten nein, was kürzeres als OR gibt es nicht. Wenn du den Vergleich häufig brauchst könntest du ihn noch in einer Variablen zwischenspeichern.

    PS.: Das "Fortgeschritten" kommentier ich gar nicht erst, da solltest du vielleicht selber mal drüber nachdenken.

    Kommentar


    • #3
      Klar kann man das einfacher Darstellen.

      PHP-Code:
      $r='_REQUEST';
      for(
      $i=1;$i<=3;$i++){$w[$i]='wert'.$i;}
      if ($
      $r[$w[1]]||$$r[$w[2]]||$$r[$w[3]]){
      //MACHWAS

      So ist die abfrage doch schon viel "einfacher dargestellt". Wenn du sonst noch fragen hast, stell sie gerne einfach. Ohne Leerzeichen spart man deutlich Platz. Viel dargestellter.
      Zitat von derwunner
      "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

      Kommentar


      • #4
        Wenn du das Konstrukt an mehreren Stellen verwendest, kannst du es natürlich in eine Funktion verpacken um Schreibarbeit zu sparen:
        PHP-Code:
        // PHP 5.6: Variadic functions can now be implemented using the ... operator,
        // instead of relying on func_get_args().
        // http://php.net/manual/de/migration56.new-features.php
        function validRequest(...$keys) {
            foreach(
        $keys as $key) {
                if (
        $_REQUEST[$key]) return true;
            }
            return 
        false;
        }

        if (
        validRequest('wert1''wert2''wert3')) {
            
        //MACHWAS

        Aber das sollte ja (eigentlich) klar sein. Eine native Funktion ist mir auch nicht bekannt.

        Kommentar


        • #5
          Zitat von monolith Beitrag anzeigen
          Wenn du das Konstrukt an mehreren Stellen verwendest, kannst du es natürlich in eine Funktion verpacken um Schreibarbeit zu sparen:
          PHP-Code:
          // PHP 5.6: Variadic functions can now be implemented using the ... operator,
          // instead of relying on func_get_args().
          // http://php.net/manual/de/migration56.new-features.php
          function validRequest(...$keys) {
              foreach(
          $keys as $key) {
                  if (! 
          $_REQUEST[$key]) return false;
              }
              return 
          true;
          }

          if (
          validRequest('wert1''wert2''wert3')) {
              
          //MACHWAS

          Wenn du das so machst, hast du dann nicht das "Problem", dass wenn 'wert2' gesetzt ist, aber 'wert1' nicht, dass du dann nicht triffst? das dort spiegelt eher eine AND-Bedinungsverkettung wieder als eine OR.
          Zitat von derwunner
          "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

          Kommentar


          • #6
            Zitat von monolith Beitrag anzeigen
            PHP-Code:
            function validRequest(...$keys) {
                foreach(
            $keys as $key) {
                    if ( 
            $_REQUEST[$key]) return true;
                }
                return 
            false;
            }

            if (
            validRequest('wert1''wert2''wert3')) {
                
            //MACHWAS

            Fixed
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              Sorry! Ich hab im Kopf aus den ors leider ands gemacht... Typischerweise sieht man sowas ja wenn nach dem Absenden eines Formulars (bzw. Empfang selbiges) geprüft werden soll ob alle geforderten Felder belegt wurden, und dazu benötigt man ja eine and-Verknüpfung. Deshalb habe ich das wohl verdreht.

              Kommentar


              • #8
                Zitat von monolith Beitrag anzeigen
                function validRequest(...$keys)
                Um nicht nur eine Funktion die in diesem einen Fall funktioniert und immer mit $_REQUEST arbeitet, schlage ich mal eine array_keys_exists vor.

                PHP-Code:
                function array_keys_exists($array, ...$keys) {
                    foreach(
                $keys as $key) {
                        if(!
                array_key_exists($key$array)) {
                            return 
                false;
                        }
                    }
                    return 
                true;

                Kommentar


                • #9
                  @Blar: Das der Schlüssel existiert ist aber nicht das gleiche wie das der Ausdruck als true ausgewertet wird. Was z.B. wenn ich 0,0,0 als Paramter angebe? Da kommt ein anderes Ergebnis raus als im Eingangspost.

                  Ich verstehe auch nicht warum da so viel Gedankenarbeit hineingesteckt wird. Der Ausdruck lässt sch vielleicht vereinfachen, aber wenn man davon ausgeht das wert1-3 nur Platzhalter sind und nicht die tatsächlichen Schlüssel ist das schon ziemlich einfach. Zumindest ohne zu wissen wie der restliche Code aussieht kann man den Code so nur verkomplizieren.

                  Kommentar


                  • #10
                    Zitat von mixmastertobsi Beitrag anzeigen
                    Hallo Zusammen,

                    ich habe eine Frage, bzw. komme gerade nicht drauf.

                    Gibt es einen Befehl, um folgendes einfacher darzustellen

                    if ($_REQUEST['wert1'] || $_REQUEST['wert2'] || $_REQUEST['wert3']){
                    //MACHWAS
                    }
                    //OT:
                    ich bin immer wieder verwundert, keine code tags, art zbw. formulierung der frage, unterforum ....
                    macht ja alles nüscht, auch als wiederholuingstäter.

                    Kommentar


                    • #11
                      Zitat von VPh Beitrag anzeigen
                      PHP-Code:
                      function validRequest(...$keys) {
                          foreach(
                      $keys as $key) {
                              if ( 
                      $_REQUEST[$key]) return true;
                          }
                          return 
                      false;
                      }

                      if (
                      validRequest('wert1''wert2''wert3')) {
                          
                      //MACHWAS

                      Fixed
                      Nix fixed... sobald der erste, valide Eintrag gefunden wurde, wird returned. Alle weiteren zu prüfenden Einträge werden schlichtweg ignoriert.

                      Wenn schon, dann so:
                      PHP-Code:
                      function validRequest(...$keys) {
                          
                      $countValid 0;
                          foreach(
                      $keys as $key) {
                              if ( 
                      $_REQUEST[$key]) $countValid++;
                          }
                          return (
                      $countValid == count($keys));
                      }

                      if (
                      validRequest('wert1''wert2''wert3')) {
                          
                      //MACHWAS

                      Valide ist es nur, wenn ALLE zu überprüfenden Schlüssel gefunden werden...
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        Es ging um "OR", da reicht wenn einer gesetzt ist.
                        [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                        [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                        Kommentar


                        • #13
                          @lstegelitz: Ich habe zunächst genau das gleiche gedacht wie du :P Er will aber tatsächlich or.

                          Kommentar


                          • #14
                            komme gerade nicht drauf.
                            Klar.
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar

                            Lädt...
                            X