Kris: Case größer gleich / kleiner gleich ?

Halli Hallo erstmal und guten Morgen :)

ist es möglich statt :

<?php
switch ($i) {
case 0:
case 1:
case 2:
... ... ...
   echo "i ist kleiner als 21 aber nicht negativ";
... ... ...
?>

auch etwas ähnliches zu schreiben statt

<?php
switch ($i) {
case <= 20 :
20 < case <= 40:
40 < case <= 60:
60 < case <= 80:
80 < case <= 100:
case 2:
   echo "i ist kleiner als 3 aber nicht negativ";
... ... ...
?>

bitte komm jetzt nicht einer an mit "Das kann man auch auf 1,2,3,4,5 statt 20,40,60,80,100 kürzen ... das hier ist nur ein Beispiel :)

mfg

KRIS

  1. <?php
    switch ($i) {
    case <= 20 :
    20 < case <= 40:
    40 < case <= 60:
    60 < case <= 80:
    80 < case <= 100:
    case 2:
       echo "i ist kleiner als 3 aber nicht negativ";
    ... ... ...
    ?>

    case ($i <= 20): ...;
    case (21 < $i <= 40): ...;
    case (41 < $i <= 60): ...;
    case (61 < $i <= 80): ...;
    case (81 < $i <= 100): ...;

    so ?

    1. Hallo,

      case ($i <= 20): ...;
      case (21 < $i <= 40): ...;
      case (41 < $i <= 60): ...;
      case (61 < $i <= 80): ...;
      case (81 < $i <= 100): ...;

      so ?

        
      switch(true)  
      {  
        case($i <= 20): ...;  
        case($i > 21 && $i <= 40): ...;  
        case($i > 41 && $i <= 60): ...;  
        case($i > 61 && $i <= 80): ...;  
        case($i > 81 && $i <= 100): ...;  
        default: ...;  
      }
      

      Alternativ bieten sich natuerlich if-elseif-else-Konstrukte an.

      MfG, Thomas

      1. [Nachtrag]:

        switch(true)
        {
          case($i <= 20): ...;
          case($i > 21 && $i <= 40): ...;
          case($i > 41 && $i <= 60): ...;
          case($i > 61 && $i <= 80): ...;
          case($i > 81 && $i <= 100): ...;
          default: ...;
        }

          
        Bezogen auf das Ausgangsposting eher so:  
          
        ~~~php
          
        switch(true)  
        {  
          case($i <= 20): ...;  
          case($i > 20 && $i <= 40): ...;  
          case($i > 40 && $i <= 60): ...;  
          case($i > 60 && $i <= 80): ...;  
          case($i > 80 && $i <= 100): ...;  
          default: ...;  
        }
        

        MfG, Thomas

      2. switch(true)

        Thomas,
        Aua, das tut doch weh. http://forum.de.selfhtml.org/archiv/2005/8/t114059/#m725939

        Alternativ bieten sich natuerlich if-elseif-else-Konstrukte an.

        Das möchte ich meinen! Das ist die vernünftige[tm] Wahl.

        Live long and prosper,
        Gunnar

        --
        „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)
        1. Hallo,

          Aua, das tut doch weh. http://forum.de.selfhtml.org/archiv/2005/8/t114059/#m725939

          Ich habe diese Technik bereits frueher hier erwaehnt und da gab es nicht so einen Aufstand.

          Man muss diese nicht moegen und ich setze auch nur selten darauf, aber es ist eben eine Moeglichkeit, die IMHO durchaus verwendbar ist.

          Alternativ bieten sich natuerlich if-elseif-else-Konstrukte an.

          Das möchte ich meinen! Das ist die vernünftige[tm] Wahl.

          <marquee>Da bin ich doch gern mal unvernuenftig!</marquee>  
          <font size="7">;-))</font>
          

          MfG, Thomas

        2. Alternativ bieten sich natuerlich if-elseif-else-Konstrukte an.

          in der strukturierten programmierung wird zwischen alternativen und fällen unterschieden. daher gibts if und case.
          wenn es sich um eine fallunterscheidung handelt, ist case sicherlich die bessere wahl, nicht nur wegen der übersichtlichkeit.
          für meine person hasse ich tiefverschachtelte if else konstuktionen als ersatz für fallunterscheidungen.

  2. Hi,

    bitte komm jetzt nicht einer an mit "Das kann man auch auf 1,2,3,4,5 statt 20,40,60,80,100 kürzen ... das hier ist nur ein Beispiel :)

    Wo liegt überhaupt Dein Problem, was genau möchtest Du machen?
    Ich rate einfach mal:

      
    $number =  42;  
    $range = 10;  
    $i = 0;  
    $j = 0;  
    // Du möchtest nur positive Zahlen  
    if($number > 0){  
      // Die Zahl soll in einem bestimmtem Bereich liegen.  
      // Der Bereich wächst kontinuierlich.  
      $i = $number - $number % $range;  
      $j = $number + $range - $number % $range;  
      echo "Die Zahl " .$number. " ist positiv und liegt zwischen ".$i." und ".$j;  
    }  
    
    

    Das ist abwärtsgerichtet d.h. 50 liegt hier zwischen 50 und 60, wäre aber einfach zu ändern.

    Achso: das lohnt sich natürlich nur, wenn auch genügend Material da ist, für zahlen von 1-31 und Bereich 10 lohnt sich das natürlich nicht, aber bei mehr ist das schon sehr effektiv.

    so short

    Christoph Zurnieden