Ich schreibe Code wie:
%Vor%Gibt es einen besseren Weg, dies zu tun? Scheint dreckig für mich, aber vielleicht bin ich gerade dabei, darüber nachzudenken.
Die einzige andere Alternative, an die ich denken kann, ist eine if-Anweisung für jeden Schlüssel, die nicht besser aussieht. I.e. :
%Vor%(oder so ähnlich)
Ich kann bei Bedarf genauen Code posten, aber dies ist der allgemeine Überblick darüber, was passiert. Bitte kritisieren Sie, aber denken Sie daran, dass ich hier Hilfe suche. Also, wenn ich etwas ungeheuer falsch mache, dann zeig es dir.
Das Zuordnen von Funktionen zu Schlüsseln in einem Wörterbuch / assoziativen Array ist ein gängiger Ansatz für diese Situation (wie @jldupont erwähnt hat) - nicht nur in PHP, sondern in vielen dynamischen Sprachen mit assoziativen Arrays. Zum Beispiel haben Python und Lua nicht einmal eine Switch-Anweisung - das ist so ziemlich die einzige Möglichkeit, einen Switch zu emulieren.
Betrachten Sie diesen Ansatz:
%Vor%Ausgabe:
%Vor%Es ist Overkill, wenn Sie nur zwei verschiedene Werte haben, aber offensichtlich wird es ein lohnender Ansatz, da die Anzahl der Situationen, die Sie abdecken müssen, zunimmt.
Es ist keine "schlechte" Lösung, aber wie immer gibt es Alternativen. Zum Beispiel könnten Sie die switch-Anweisung loswerden und einen interpretierten Handler für die Strings verwenden. Dies ähnelt einer Liste von Funktionszeigern, aber Sie müssen eine Liste nicht auf dem neuesten Stand halten, um neues Verhalten hinzuzufügen. Das Hinzufügen der neuen Funktion zum Handler wird dafür sorgen.
%Vor%Sie werden wahrscheinlich Code benötigen, um die Eingabezeichenfolgen zu bereinigen und sicherzustellen, dass die Methode in Ihrem Handler vorhanden ist, aber dies könnte Ihnen einige Ideen geben.
Es gibt (mindestens) eine andere Möglichkeit: Verwenden Sie eine Wörterbuchsuche, um Arbeit an eine Funktion zu senden.
Suchen Sie die Funktion mit der Taste $ als "Schlüssel", rufen Sie die Funktionsreferenz ab und wenden Sie sie mit $ value als Parameter an.
Verzeih mir, aber mein PHP-Fu ist ein bisschen eingerostet.
Tags und Links php switch-statement