Hallöle,
switch case dürfte ja jedem Programmierer ein Begriff sein.
Sieht ja üblicherweise etwa so aus:
switch($irgendeinevariable)
{
case 1:
//irgendwas
break;
case 2:
//irgendwas
break;
case 3:
//irgendwas
break;
default:
//irgendwas
break;
}
Jetzt hab ich in einem der case-Zweige aber eine Konstruktion
case 1:
if (irgendeineBedingung)
{
//tu irgendwas
}
else
{
//irgendwas
if (irgendeineBedingung)
{
//tu irgendwas
}
else
{
//irgendwas
if (irgendeineBedingung)
{
//tu irgendwas
}
else
{
//irgendwas
if (irgendeineBedingung)
{
//tu irgendwas
}
else
{
//irgendwas
}
}
}
}
break;
mit einer ziemlichen Schachtelung (wesentlich mehr Ebenen als hier angedeutet).
Im if-Fall also jeweils ein, zwei Zeilen (Fehlermeldung setzen) und dann einige Aktionen im Else-Zweig.
Gibt ne ziemlich unschöne Schachtelung - und nach dem jeweiligen else passiert nichts mehr.
Das ganze ließe sich also auch per
case 1:
if (irgendeineBedingung)
{
//tu irgendwas
break;
}
//irgendwas
if (irgendeineBedingung)
{
//tu irgendwas
break;
}
//irgendwas
if (irgendeineBedingung)
{
//tu irgendwas
break;
}
//irgendwas
if (irgendeineBedingung)
{
//tu irgendwas
break;
}
//irgendwas
break;
umformen, also statt des else-Zweigs im if ein break und den ehemaligen else-Zweig nicht mehr verschachtelt - wesentlich weniger Einrückung (elseif geht nicht, da zwischen dem else und dem nächsten if erst noch was anderes steht)
Mit meinem PHP hier funktioniert das auch wie gewünscht.
Jetzt meine Frage:
Ist das ein echtes Feature von PHP oder nur eine Lücke, die vielleicht in der nächsten PHP-Version geschlossen wird?
Und wie sieht das in anderen Programmiersprachen aus mit dem break, das tief verschachtelt in if-else-Konstruktionen steht?
cu,
Robert