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: -)
Dies hat PHP-Entwickler seit Jahren gestört und in PHP 7 ist endlich der COALESCE-Operator ??
angekommen:
funktioniert genauso wie Ihr Code.
Zitieren des RFC :
Der Operator coalesce oder
erhöht??
wird hinzugefügt, der das Ergebnis seines ersten Operanden zurückgibt, falls er existiert und nichtNULL
ist, oder seines zweiten Operanden. Dies bedeutet, dass$_GET['mykey'] ?? ""
absolut sicher ist und nichtE_NOTICE
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
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.
Tags und Links arrays php coding-style variable-assignment