Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] if / elseif kürzer, eleganter ?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] if / elseif kürzer, eleganter ?

    hallo zusammen,

    ist es möglich folgender code kürzer, eleganter zuschreiben?

    PHP-Code:
    if ($row_modell['idlieferung'] == "HT03") {         
            if (
    $row_modell['gewicht'] < 150) { $ht_netto 89; }     
            elseif (
    $row_modell['gewicht'] >= 150 && $row_modell['gewicht'] < 250) { $ht_netto 129; }     
            elseif (
    $row_modell['gewicht'] >= 250 && $row_modell['gewicht'] < 400) { $ht_netto 156; }     
            elseif (
    $row_modell['gewicht'] >= 400 && $row_modell['gewicht'] < 600) { $ht_netto 242; }     
            elseif (
    $row_modell['gewicht'] >= 600 && $row_modell['gewicht'] < 800) { $ht_netto 318; }     
            elseif (
    $row_modell['gewicht'] >= 800 && $row_modell['gewicht'] < 1000) { $ht_netto 371; }     
            elseif (
    $row_modell['gewicht'] >= 1000 && $row_modell['gewicht'] < 1200) { $ht_netto 425; }     
            elseif (
    $row_modell['gewicht'] >= 1200 && $row_modell['gewicht'] < 1450) { $ht_netto 500; }     
            elseif (
    $row_modell['gewicht'] >= 1450 && $row_modell['gewicht'] < 1650) { $ht_netto 608; }     
            elseif (
    $row_modell['gewicht'] >= 1650 && $row_modell['gewicht'] < 1800) { $ht_netto 662; }     
            elseif (
    $row_modell['gewicht'] >= 1800 && $row_modell['gewicht'] < 2000) { $ht_netto 710; }     
            elseif (
    $row_modell['gewicht'] >= 2000 && $row_modell['gewicht'] < 2500) { $ht_netto 877; }     
            elseif (
    $row_modell['gewicht'] >= 2500 && $row_modell['gewicht'] < 3000) { $ht_netto 1038; }     
            elseif (
    $row_modell['gewicht'] >= 3000) { $ht_netto "Preis auf Anfrage"; }         
         } 


  • #2
    Ja.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      könntest du mir bitte einen Tipp geben? ich meine den Weg zeigen, ich erwarte ja nicht das man mir hier alle aufschreibt

      Kommentar


      • #4
        switch/case
        arrays
        OOP
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Als erste kannst du dir schonmal die ganzen >= abfragen sparen, da alles was nich kleiner als x ist wahrscheinlich größer sein wird. Und wenn es dir dann immernoch nicht gefällt kannst du einen switch verwenden:

          PHP-Code:
          $switch $row_modell['gewicht'];
          switch(
          $switch) {
              case 
          $switch 150:
                  print 
          10;
              break;
              case 
          $switch 200:
                  print 
          20;
              break;

          Edit:
          Zitat von nikosch Beitrag anzeigen
          switch/case
          arrays
          OOP
          OOP?

          Kommentar


          • #6
            PHP-Code:
            $switch $row_modell['gewicht'];
            switch(
            $switch) {
                case 
            $switch 150:
                    print 
            10;
                break;
                case 
            $switch 200:
                    print 
            20;
                break;

            Das geht so nicht. In diesem Fall muß switch(true) verwendet werden!
            Ich würde Arrays und eine Schleife mit Abbruchbedingung benutzen.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Zitat von nikosch Beitrag anzeigen
              Das geht so nicht. In diesem Fall muß switch(true) verwendet werden!
              Ich würde Arrays und eine Schleife mit Abbruchbedingung benutzen.
              Doch, habs vorher sogar getestet weil ich switches normalerweise ohne bedingung verwende und selbst nicht wusste ob es funktionieren würde. Kannst du dass mit OOP vielleicht noch mit einem zweiten wort erläutern

              Kommentar


              • #8
                Doch, habs vorher sogar getestet
                Dann teste mal mit dem Wert 0.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  ups , könnte man aber mit einem default abfangen

                  Wie du dass mit OOP meinst würde mich aber weiterhin interessiern, oder soll ich noch lönger betteln

                  Kommentar


                  • #10
                    Zitat von Squall Beitrag anzeigen
                    ups , könnte man aber mit einem default abfangen

                    Wie du dass mit OOP meinst würde mich aber weiterhin interessiern, oder soll ich noch lönger betteln
                    In dem du einfach eine Klasse/Funktion schreibst dem du $var, max , min übergibst, und dann ggf. true oder false zurückbekommst !? ( z.B. )
                    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                    Kommentar


                    • #11
                      Ein Beispiel für Verwendung eines Arrays
                      PHP-Code:
                      // key: "bis zu einem Gewicht von .. kg
                      // value: Preis
                      $weight_prices = array(
                              
                      250 => 129,
                              
                      50 => 89,     
                              
                      400 => 156
                      );

                      // absteigend sortieren
                      $weight_prices array_reverseksort($weight_prices) );

                      // Eingabe
                      $weight 312;
                      $price 0;
                      foreach(
                      $weight_prices as $key => $value) {
                        if (
                      $weight <= $key) {
                          
                      $price $value;
                          break;
                        }

                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        Zitat von lstegelitz Beitrag anzeigen
                        PHP-Code:
                        // absteigend sortieren
                        $weight_prices array_reverseksort($weight_prices) ); 
                        Code:
                        Warning: array_reverse() expects parameter 1 to be array, boolean given
                        Es gibt übrigens krsort()
                        VokeIT GmbH & Co. KG - VokeIT-oss @ github

                        Kommentar


                        • #13
                          PHP-Code:
                          // absteigend sortieren 
                          $weight_prices array_reverseksort($weight_prices) ); 
                          PHP-Code:
                          natsort($weight_prices); 
                          sollte gehn, aber nicht getestet.
                          "My software never has bugs, it just develops random features."
                          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                          Kommentar


                          • #14
                            Zitat von G.Schuster Beitrag anzeigen
                            Code:
                            Warning: array_reverse() expects parameter 1 to be array, boolean given
                            Es gibt übrigens krsort()
                            Eieiei, danke für den Tipp
                            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                            Kommentar


                            • #15
                              vielen Dank an alle!

                              ich habe mich für switch/case entschieden und es funktioniert prima.

                              ich habe es auch mit Arrays versucht, es funktioniert nur wenn ich

                              PHP-Code:
                              // absteigend sortieren 
                              //$weight_prices = array_reverse(krsort($weight_prices)); 
                              auskommentiere.

                              verstehe ich das richtig, diese Stelle wird nur dann benötigt wenn die Gewichte nicht sortiert in dem Array geschrieben sind?

                              Kommentar

                              Lädt...
                              X