mehrere if abfragen

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

  • mehrere if abfragen

    hallo,
    ich habe mehrere if abfragen, wenn keine der abfragen erfüllt ist soll am ende eine else bedingung kommen, doch leider funktioniert das nicht mit nachstehendem code

    PHP-Code:
    if (preg_match('#\s\d.\s\w+\s\d+\/\d\d#',$content,$target1)){      
    foreach (
    $target1 as $value){                      
    print 
    $value "reg1<br>";                          
    }      }            
    if (
    preg_match('#\s(\w\w\s\w+\s\d+\/\d\d)#',$content,$target2)) {          
    foreach (
    $target2 as $value){                      
    print 
    $value "reg2<br>";              
    }}                        
    if (
    preg_match('#(\w\w\w\s\w+\s\d+\/\d\d)#',$content,$target3)) {          
    foreach (
    $target3 as $value){                      
    print 
    $value "reg3<br>";                  }}                                
    if (
    preg_match('#(\w\s\w+\s\d+\/\d\d)#',$content,$target4)) {                      
    foreach (
    $target4 as $value){                      
    print 
    $value "reg4<br>";                          
    }}                                            
    if (
    preg_match('#\s(\w\w\w\w\s\w+\s\d+\/\d\d)#',$content,$target5)) {                              
    foreach (
    $target5 as $value){ 
    print 
    $value "reg5<br>";              
    }  }
    else
    echo 
    "keine Übereinstimmungen"
    ich bin mir auch gar nicht sicher, ob das mit dem else am ende richtig ist, da das doch eigentlich nur ausgeführt wird, wenn die letzten if bedingung nicht greift.
    gibt es denn etwas, wie " wenn alle if bedigungen false" dann echo
    vielen dank für tipps

  • #2
    Und elseif hilft dir nicht weiter? Ansonsten könntest du in einem abschliessenden if deine $target Vars prüfen und wenn alle leer sind deine Meldung ausgebgen
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      guck dir mal elseif(){} an
      "Nicht jeder Mensch kann und soll Programmieren[...]".

      Kommentar


      • #4
        Das wäre viel schöner mit einem switch... case mit einem default am Schluss.
        ich glaube

        Kommentar


        • #5
          Erst mal: formatiere deinen Code bitte so, dass man ihn auch lesen kann
          Sicher geht das n icht mit deinem Code, da sich das else ja nur auf das letzte if bezieht. Wenn es sich im exklusive if's handelt, dh. es kann nur eines zutreffen, benutze elseif:
          PHP-Code:
          if(preg_match('#sd.sw+sd+/dd#',$content,$target1)){      
              foreach (
          $target1 as $value){                      
                  print 
          $value "reg1<br>";                          
              }      
          }            
          elseif(
          preg_match('#s(wwsw+sd+/dd)#',$content,$target2)) {          
              foreach (
          $target2 as $value){                      
                  print 
          $value "reg2<br>";              
              }
          }                        
          elseif(
          preg_match('#(wwwsw+sd+/dd)#',$content,$target3)) {          
              foreach (
          $target3 as $value){                      
                  print 
          $value "reg3<br>";
                  }
          }                                
          elseif (
          preg_match('#(wsw+sd+/dd)#',$content,$target4)) {                      
              foreach (
          $target4 as $value){                      
                  print 
          $value "reg4<br>";                          
              }
          }                                            
          elseif(
          preg_match('#s(wwwwsw+sd+/dd)#',$content,$target5)) {                              
              foreach (
          $target5 as $value){ 
                  print 
          $value "reg5<br>";              
              }  
          }
          else{
              echo 
          "keine Übereinstimmungen";

          Wenn hingegen mehrere Bedingungen zutreffen können, definiere eine Hilfsvariable:
          PHP-Code:
          $hilfsvar false;
          if(
          preg_match('#sd.sw+sd+/dd#',$content,$target1)){      
              foreach (
          $target1 as $value){                      
                  print 
          $value "reg1<br>";                          
              }       
              
          $hilfsvar true;
          }            
          if(
          preg_match('#s(wwsw+sd+/dd)#',$content,$target2)) {          
              foreach (
          $target2 as $value){                      
                  print 
          $value "reg2<br>";              
              }                
              
          $hilfsvar true;

          if(.....
          ....
          if(!
          $hilfsvar){
              echo 
          "keine Übereinstimmungen";

          Gruss
          H2O

          Kommentar


          • #6
            @h2o
            danke sehr.
            habe es zunächst mit elseif versucht, doch wie du auch gleich ergänst hast, sind mehrer bedingungen wahr, so dass elseif abgebroche hat als eine abfrage true wahr und somit nicht mehr die nachfolgenden regex getestethat.
            der zweit vorschlag sieht hingegen sehr hilfreich aus,
            da wären wir dann aber wieder beim klassischen if

            thx

            Kommentar


            • #7
              Du solltest uns verraten was du eigentlich machen willst - diese Wiederholung ist jedenfalls sinnlos.
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar


              • #8
                ich würde ne schleife reinpacken. Ist viel einfacher zu warten.

                Kommentar

                Lädt...
                X