if else vs. Switch case

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

  • #16
    Original geschrieben von TBT
    man kann switch auch wunderschön missbrauchen ...
    beim "millisekunden kratzen" drauf gestossen, oder nur 'ne "interessante" variante zu if-elseif-else ?
    Kissolino.com

    Kommentar


    • #17
      Original geschrieben von Wurzel
      beim "millisekunden kratzen" drauf gestossen, oder nur 'ne "interessante" variante zu if-elseif-else ?
      nicht nur interessant, sondern schön übersichtlich und weit schneller als if/elseif/else

      kommt darauf an, was du besser lesen kannst
      PHP-Code:
      if( $_kombi
          
      && ( !isset( $_kombi['semid_i'] )
              || 
      is_null$_kombi['semid_i'] )
              || !
      $_kombi['semid_i']
          )
      ){
          
      $_kombi['status_c'] = 'U';
          
      // letztes Semester pruefen
          
      if( isset( $_kombi['semid_i2'] ) && $_kombi['semid_i2'] == 'A' ) {
              
      $_kombi['info_c'] = 'letz. Sem. aktiv';
          }elseif( isset( 
      $_kombi['semid_i2'] ) && $_kombi['semid_i2'] == 'I' ){
              
      $_kombi['info_c'] = 'letz. Sem. inaktiv';
          }else{
              
      $_kombi['info_c'] = 'letz. Sem. unbekannt';
          }
          return;

      oder
      PHP-Code:
      switch( true ) {
          case 
      $tmp = ( $_kombi && ( !isset( $_kombi['semid_i'] ) 
              || 
      is_null$_kombi['semid_i'] ) || !$_kombi['semid_i'] ) 
              && 
      $lsem = isset( $_kombi['semid_i2'] ) && $_kombi['semid_i2'] == 'A' : {
          
          }
          case 
      $tmp && $lsem && $_kombi['semid_i2'] == 'I' : {
                  
          }
          case 
      $tmp && ! $lsem : {
                  
          }
      // PS: nur mal schnell hingetippselt 
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #18
        interessant. ich wusste nicht, dass sich auch komplexere strukturen per switch/case abbilden lassen.
        thx tbt
        Kissolino.com

        Kommentar


        • #19
          @ TnT
          Die erste Variante schien mir genau was ich suchte zu sein. Leider hatte ich folgendes verhalten:

          Die Case werden immer abgearbeitet, ich sollte es aber entweder oder haben, wenn Du weisst was ich meine.

          So hatte ich alle Meldungen zugleich, (was nicht schlimm wäre) aber auch default wurde ausgeführt und ein Eintrag in die DB geschrieben, was nicht sein sollte.

          Kommentar


          • #20
            Die Case werden immer abgearbeitet, ich sollte es aber entweder oder haben, wenn Du weisst was ich meine.
            PHP-Code:
            break 
            könnte dein Freund sein

            Gruss

            tobi
            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


            • #21
              @jahlives

              Ja Danke macht Sinn!

              Nun habe ich aber kein Lust mehr, da ich es bereits anders verschachtelt nun doch mit if else gelöst habe.

              Aber ich werde es bestimmt bald in einem neuen Script austesten, und dann mit meinem Freund break;

              Um es mit dem 1. Bsp. von TBT zu zeigen:

              PHP-Code:
              switch ( true ) {
                 case 
              $a==1: {
                    
              // 
                  
              }
              break;
                 case 
              $b==15: {
                    
              // 
                 
              }
              break;
                 case 
              $a<$b && func_keineahnung($a)==: {
                    
              // 
                 
              }
              break;
                 case 
              $x=='wasweissich': {
                    
              // 
                 
              }
              break;
                 default: {
                    
              // alles andere
                 
              }

              Oder habe ich hier noch eine Denkfehler drin?

              Kommentar


              • #22
                Original geschrieben von rönee
                @ TnT
                lol

                Die erste Variante schien mir genau was ich suchte zu sein. Leider hatte ich folgendes verhalten:

                Die Case werden immer abgearbeitet, ich sollte es aber entweder oder haben, wenn Du weisst was ich meine.
                Wenn du http://www.php.net/switch gelesen hättest, hättest du dort gefunden, dass du break benutzen sollst...
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #23
                  Habe ich gelesen nur, nach dem Beispiel von TBT (tnt) glaubte ich die richtige Lösung zu haben und habe sein Script auch nicht hinterfragt.

                  Iss ja egal jetzt.

                  Kommentar

                  Lädt...
                  X