Was genau wäre daran übersichtlicher und lesefreundlicher als an
if ($flag & VIERTES_FLAG)
echo "Viertes";
else if ($flag & DRITTES_FLAG)
echo "Drittes";
else if ($flag & ZWEITES_FLAG)
echo "Zweites";
else if ($flag & ERSTES_FLAG).
echo "Erstes";
>
> Und kürzer ist switch schon wegen der breaks nicht.
Ok, es bleibt mir wohl nichts anderes übrig, als das "am kürzesten" zurückzunehmen. Allerdings halte ich die breaks für keinen Aspekt hier. Bei solch kurzen Blöcken würde ich es in der Praxis eh als Einzeiler notieren,
~~~php
switch (true) {
case $flag & VIERTES_FLAG: echo "Viertes"; break;
case $flag & DRITTES_FLAG: echo "Drittes"; break;
case $flag & ZWEITES_FLAG: echo "Zweites"; break;
case $flag & ERSTES_FLAG: echo "Erstes"; break;
}
bei längeren Blöcken fällt die eine zusätzliche Zeile nicht wirklich ins Gewicht.
Lesefreundlicher finde ich die switch-Variante jedenfalls erheblich, es wirkt sehr viel homogener. Wenn Du diese if-else-Suppe übersichtlicher findest, dann würde ich die Gegenfrage stellen wollen, warum (bzw. ob) Du überhaupt switch-Statements verwendest.
Na ja, ich werde Dich wohl jetzt kaum konvertieren, und darum ging es auch nicht. Du sagtest, für so etwas "solle" switch nicht verwendet werden, ich sehe diese Aussage bisher als haltlos an ;-)
Wenn man irgendwas gegen true vergleicht, sollte man sich immer fragen, ob das wirklich sinnvoll ist.
ACK. Und die Antwort wird manchmal 'Nein' und manchmal 'Ja' heißen :-)
Viele Grüße,
der Bademeister