Schnellste Möglichkeit, eine PHP-Variable aus einem Array-Wert zuzuordnen, der möglicherweise nicht ohne Fehler existiert

8

Das ist eine Art Code-Golf, aber ich habe nicht das Gefühl, dass es ein Thema ist, weil das Problem oft auftaucht, während ich arbeite, und Code klar und lesbar zu halten ist sehr auf Thema.

%Vor%

Das funktioniert gut, aber es wird sehr lang mit längeren Variablennamen usw., und es macht es schwierig, große mehrdimensionale Arrays zu lesen ...

%Vor%

Abgesehen davon, dass es hässlich und schwer zu lesen ist, entspricht es nicht der maximalen Linienbreite (80 °) von PSR-2.

Das Flugzeug wird nicht abstürzen, wenn ich das tue ...

%Vor%

... aber wenn der Inhalt des Arrays unbekannt ist, wird es die Protokolle mit Fehlermeldungen über "Array-Schlüssel existiert nicht" füllen.

Gibt es dafür eine Lösung? ( neben Schreiben einer Hilfsfunktion)

(... und neben Ruby: -)

    
emersonthis 01.10.2015, 20:27
quelle

1 Antwort

5

Dies hat PHP-Entwickler seit Jahren gestört und in PHP 7 ist endlich der COALESCE-Operator ?? angekommen:

Der neue Weg (beginnend mit PHP 7):

%Vor%

funktioniert genauso wie Ihr Code.

Zitieren des RFC :

  

Der Operator coalesce oder ?? wird hinzugefügt, der das Ergebnis seines ersten Operanden zurückgibt, falls er existiert und nicht NULL ist, oder seines zweiten Operanden. Dies bedeutet, dass $_GET['mykey'] ?? "" absolut sicher ist und nicht E_NOTICE

erhöht

Der alte Weg (hackish Workaround):

%Vor%

Dies verwendet den Fehlerunterdrückungsoperator @ zum Stummschalten der Nachricht und den kurzen ternären Operator ?: . Wenn wir $variable nur auf null setzen müssen, wenn $array['A'] nicht gesetzt ist, kann es auf

verkürzt werden %Vor%

Es sollte angemerkt werden, dass @ als schlechte Praxis angesehen wird und ich fühle mich ein bisschen dreckig, es zu empfehlen, aber wenn Sie mit gelegentlichen Best-Practice-Verletzungen leben können, ist dies eine Situation, in der es keinen Schaden anrichtet:

In dieser Zeile kann nur ein möglicher Fehler auftreten (undefinierte Variable / Offset). Sie erwarten es und behandeln es anmutig.

    
Fabian Schmengler 01.10.2015, 20:55
quelle