Ankündigung

Einklappen
Keine Ankündigung bisher.

Alternative zu if abfrage

Einklappen

Neue Werbung 2019

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

  • Alternative zu if abfrage

    hallo,

    gibt es eine alternative zu einer langen if abfrage ???

    PHP-Code:
    <?php
    if ($bauende == 0){
    echo 
    "01";
    }else{
        if (
    $bauendewarteschleife1 == 0){
        echo 
    "02";
        }else{
            if(
    $bauendewarteschleife2 == 0){
            echo 
    "03";
            }else{
            }
        }
    }
    ?>

  • #2
    Normalerweise verwendet man als Alternative gerne switch-case Anweisungen. Schau mal hier:
    http://de.php.net/switch

    Kommentar


    • #3
      aber hier wäre switsch auch nicht die beste lösung

      Kommentar


      • #4
        ne, mit switch-case Anweisungen geht es hier nicht.
        Ich würde es ja so lassen aber ich habe irgendwo hier im forum gelesen dass {} die ganze scripte verlangsamen, und bei ganz alngen if abfragen, vor allem wenn sie mehrmals vorkommen ( ca 30 - 40 mal ) hmm, dann denk ich dass man die verlangsamung schon erkennen kann.

        Kommentar


        • #5
          aha

          Von allen Gründen, die ich mir vorstellen kann, eine If-Abfrage zu verkürzen, ist die Performance so ziemlich der unsinnigste.

          Man darf nicht alles glauben, was irgendwer hier schreibt.

          Und man sollte Struktur/Lesbarkeit eines Scriptes generell nur der Performance opfern, wenn es absolut nicht anders geht.

          Kommentar


          • #6
            hier ist mal noch ne möglichkeit wie man sich sehr viel schreibarbeit sparen kann

            PHP-Code:
            <?php

            $max 
            "3";
            $var "bauende";


            $bauende0 "1";
            $bauende1 "1";
            $bauende2 "0";


            for(
            $i=0;$i<$max;$i++){
                $
            $wert $var.$i;
                if(isset($$
            $wert)){
                    if($$
            $wert==0){
                        echo 
            $i;
                        break;
                    }
                } 
            }

            ?>
            Ausgabe bei dieser variante ist "2"

            diese kann man auch ganz leicht auf 20 oder 30 variablen erhöhen


            Ich kann nun aber auch nicht sagen ob das von der Performance die schnellste Lösung ist. Es spart aber sehr sehr viel schreibarbeit.

            Das ganze lässt sich auch schnell auf post oder get oder wie auch immer umschreiben.

            mfg

            Kommentar


            • #7
              naja, das geht wenn eine und die selbe variable verschiedene werte hat, es sind aber 3 variablen

              Kommentar


              • #8
                Es gibt noch ne Alternative zu einer langen if-Abfrage, eine kurze if-Abfrage.
                Code:
                <?php
                
                if ($bauende == 0) echo "01";
                if ($bauendewarteschleife1 == 0) echo "02";
                if ($bauendewarteschleife2 == 0) echo "03";
                
                ?>
                Was mir jedoch nicht ganz klar ist, warum du das Teil soweit verschachtelt hast?
                Normalerweise kommt man auch ohne tiefere Verschachtelungen aus.

                Kommentar


                • #9
                  schau mal genau hin bei mir sind es auch 3 variablen

                  bei deinem beispiel wären es auch 3

                  bauende
                  bauendeschleife1
                  bauendeschleife2

                  und ich hab halt

                  bauendeschleife0 = bauende0
                  bauendeschleife1 = bauende1
                  bauendeschleife2 = bauende2

                  mfg

                  Kommentar


                  • #10
                    Ahh, ja, wenn es mehr variablen sind als 3 könnte es ne menge zeit schreiben und das programm verkleinern ^^ aber bei 3 variablen lohnt es kaum ^^

                    Kommentar


                    • #11
                      Nicht nur, dass es kaum lohnt, es macht aus simplem Code komplizierten Code, was man generell vermeiden sollte.

                      Ausserdem ist der Code eher unsauber:
                      - alles, was man mit variablen Variablen lösen kann, geht sauberer über Arrays
                      - variable Variablen sind ein zumindest rötliches Tuch in PHP, wer weiß, was er tut, vermeidet sie
                      - viele for-schleifen lassen sich durch foreach() ersetzen, und das sollte man dann auch tun, da man sich hierdurch auf das Array konzertrieren kann und nicht mit irgendwelchen Zahlen beschäftigen muss

                      PHP-Code:
                      <?php
                      $bauende_arr 
                      = array(1,1,0);

                      foreach (
                      $bauende_arr as $position => $bauende) {
                          if (
                      $bauende==0) {
                              echo 
                      $position;
                              break;
                          }
                      }
                      ?>
                      Das ist "kurz". Vor allem ist es auf das reduziert, was interessiert.
                      1. Definiere drei Werte. Dass die durchnummeriert sind erledigt das Array von selbst, diverses andere auch.
                      2. Gehe alle Werte durch. foreach nimmt einem hier alles ab, was man sonst über irgendwelche zahlen (z.B. $max) selbst steuern müsste, es greift sich einfach jeden Wert des Arrays.
                      3. Führe für jeden Wert die Korrekte behandlung durch. Break zum Abbruch im ersten Erfolgsfall.

                      Kommentar

                      Lädt...
                      X