Wie Zahlenintervalle unterscheiden - if oder via switch?

buzzom

Mitglied
Hallo,

ich weiss nicht wie ich dieses Logikproblem technisch umsetzen kann.

Ich will Zahlenintervalle "von - bis" auswerten, also z.B. wenn die Zahlen
von 1-10 rauskommen, soll Text A erscheinen
wenn 11- 20, Text B
und 21-30, Text C

Kann man das mit switch machen oder nur via if Abfrage.

Ich würde mich über ein Codebeispiel sehr freuen.

Eure Buzzi
 
Du kannst es auch mit einer SWITCH-Anweisung lösen, allerdings musst du da das Konstrukt etwas gegen seine Bestimmung verwenden:
PHP:
switch(TRUE) {
    case ($value >= 1 && $value <= 10):
        // Text A ausgeben
        break;

    case ($value >= 11 && $value <= 20):
        // Text B ausgeben
        break;

    case ($value >= 21 && $value <= 30):
        // Text C ausgeben
        break;

    default: break;
}
 
Warum denn so kompliziert?

PHP:
switch($value)
{
  case ($value > 20):
    // do sth
  break;
  case ($value > 10):
    // do sth
  break;
  case ($value > 0)
    // do sth
  break;
  default: break;
}
 
Naja, hier würde ich sagen is das ne Streitfrage :D

Aber bevor man ein switch so zweckentfremdet, wieso nicht ifs verwenden? - Switches sind meines Erachtens da, um konkrete Zustände zu unterscheiden, und nicht für so etwas gedacht.

Aber wie gesagt is ne Streit- und Stilfrage.

Gruß
 
Ich reih mich mal mit einem (abstrusen?) Vorschlag ein

PHP:
switch (ceil($value/10)*10){
	case '10':
		// out
		break;
	case '20':
		//out
		break;
	case '30':
		//out
		break;
	case '40':
		//out
		break;
}
 
Naja, hier würde ich sagen is das ne Streitfrage :D

Aber bevor man ein switch so zweckentfremdet, wieso nicht ifs verwenden? - Switches sind meines Erachtens da, um konkrete Zustände zu unterscheiden, und nicht für so etwas gedacht.

Aber wie gesagt is ne Streit- und Stilfrage.

Gruß

Er hat halt danach gefragt ;)

PHP:
switch(true)
{
	case ($value > 20):
		// do sth
	break;
	case ($value > 10):
		// do sth
	break;
	case ($value > 0):
		// do sth
	break;
	default: break;
}  

if($value > 20)
{
	// do sth
}
elseif($value > 10)
{
	// do sth
}
elseif($value > 0)
{
	// do sth
}

$case = ( $value > 0 ? $value > 10 ? $value > 20 ? '>20' : '>10' : '>0' : '' );

Das Letzte gefällt mir besonders gut ;)

Ich reih mich mal mit einem (abstrusen?) Vorschlag ein

PHP:
switch (ceil($value/10)*10){
	case '10':
		// out
		break;
	case '20':
		//out
		break;
	case '30':
		//out
		break;
	case '40':
		//out
		break;
}
Ah, der ist auch nett. Aber da ist das *10 übertrieben, da wäre dann einstellig noch besser. ;)
 
PHP:
switch($value)
{
    case ($value > 20):
        // do sth
    break;
    case ($value > 10):
        // do sth
    break;
    case ($value > 0):
        // do sth
    break;
    default: break;
}

kurze Frage :)
syntaktisch stimmt das ja nicht ganz, oder?
entspricht ja in etwa
PHP:
if (value == (value > 20))

müsste doch wieder eher in Richtung
PHP:
switch(true) ...
gehen?

Er hat halt danach gefragt ;)
Nach dem Motto.. der Kunde ist König? :)
 
Zurück