PHP Switch/Case mit sprintf

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo,

derzeit sitze ich vor einem für mich großem Problem. Ich gebe an eine Funktion 5 Zahelenwerte. Per switch/case soll nun abfgefragt werden welcher Wert existiert und ein entsprechender Fall ausgeführt werden.

im Kopf habe ich folgende Abfrage gehabt:
PHP:
switch($sprint = sprintf('%d%d%d%d%d', $var1, $var2, $var3, $var4, $var5)){
case '00000': break;
case '00001': break;
case '00010': break;
case '00011': break;
case '00000': break;
case '00001': break;
.
.
.
case '11100': break;
case '11101': break;
case '11110': break;
case '11111': break;

Weiß jemand wie ich das sprintf formatieren muss, damit ich den entsprechenden wert zurück bekomme? Wer kann mir hier weiterhelfen?

Gruß
Papenburger
 
Wandel es doch von Hand in die Dezimalentsprechung um, bevor du sowas Komisches machst. Aber ja, so müsste es klappen.
 
um auf deine Frage einzugehen:
wie man strings mit sprintf() formatiert siehst du hier

ansonsten wäre es evtl gut zu wissen, welche Ausgangswerte du hast um dir eine Alternative geben zu können
 
2^6 (64) Case-Blöcke? Das klingt nach reinstem Spaghetti-Code ;)

2^5 = 32 Fälle...
Ich hab ja nur 5 Variablen, welche 0 oder 1 sein können ;-)

Das Switch/Case mag in diesem Fall zwar Spaghetti-Code sein, aber äußerst Hilfreich um alle Fälle entsprechend abzufragen. Hast du eine Andere Lösung wie man das machen kann? Dies war meines Erachtens, die einfachste und schnellste Lösung. "Quick and Dirty" auf gutdeutsch gesagt. Nicht schön, aber hilfreich...

um auf deine Frage einzugehen:
wie man strings mit sprintf() formatiert siehst du hier

Okay, vielleicht hab ich mich falsch ausgedrückt...
Wollte wissen, wie man die Variablen dementsprechend umwandelt, dass das Switch/Case entsprechend greift.

ansonsten wäre es evtl gut zu wissen, welche Ausgangswerte du hast um dir eine Alternative geben zu können

Die Ausgangslage sind die Variablen. In ihr befinden sich ganz normale Zahlen. Für das Switch/Case muss ich ja einfach nur wissen, ob die Variable belegt ist oder nicht...

Ich bin schon selbst auf die Lösung gekommen:
Im Endeffekt wandelt man die Variablen in Booleans um. Dannach kann man per sprintf() auf das von mir beschrieben Switch/Case prüfen.

Ergebnis:
PHP:
$var1 = (bool)$var1;
$var2 = (bool)$var2;
$var3 = (bool)$var3;
$var4 = (bool)$var4;
$var5 = (bool)$var5;

switch($sprint = sprintf('%d%d%d%d%d', $var1, $var2, $var3, $var4, $var5)){
case '00000': break;
case '00001': break;
case '00010': break;
case '00011': break;
case '00000': break;
case '00001': break;
.
.
.
case '11100': break;
case '11101': break;
case '11110': break;
case '11111': break;
default: break;

Das funktioniert super und für meine Zwecke vollkommen ausreichend, da ich jedenfall entsprechend prüfen muss. Zu guter Letzt darf der default natürlich nicht fehlen in dem dann eine Fehlermeldung zurück gegeben wird!
 
Zuletzt bearbeitet:
Mache sowenig mit php inzwischen...
Kanns passieren, das die Vraiable null ist? Oder wird das bei(bool) dann in false gewandelt?