Sie sind gleichwertig.
Einige Programmierer bevorzugen diesen "Yoda-Stil", um das Risiko eines versehentlichen Schreibens zu vermeiden:
%Vor%, was äquivalent zu
ist %Vor%, wenn sie schreiben wollten
%Vor% (wobei if (true = $variable)
eher einen offensichtlichen Fehler als einen potenziell subtilen Fehler erzeugen würde).
Kurze Antwort
Manche Leute tun das, um zu vermeiden, dass sie versehentlich den Zuweisungsoperator ( =
) verwenden, wenn sie wirklich einen Vergleichsoperator verwenden wollten ( ==
oder ===
).
Lange Antwort
In PHP gibt es 3 Operatoren, die miteinander verwechselt werden können:
=
ist der Zuweisungsoperator ==
ist der "gleich" Operator ===
ist der Operator "identisch mit" Der erste Operator wird nur verwendet, um einer Variablen einen Wert zuzuweisen. Die zweite und dritte werden nur verwendet, um zwei Werte oder Ausdrücke miteinander zu vergleichen.
In PHP ist es möglich, einer Variablen innerhalb von Kontrollstrukturen einen Wert zuzuordnen ( if
, for
, while
usw.). Dies kann zu Problemen führen, wenn Sie nicht vorsichtig sind. Wenn Sie beispielsweise $a
mit einem booleschen Wert vergleichen möchten, können Sie das folgendermaßen tun:
Wenn Sie jedoch nicht aufpassen, kann es so enden:
%Vor% ... das ist absolut legaler Code, aber es ist eine Aufgabe und wird schließlich Probleme verursachen. Der Grund dafür ist, dass der Ausdruck $a=false
ausgewertet wird und der Code weiterläuft, als ob nichts falsch wäre, obwohl dies eigentlich nicht beabsichtigt war.
Der Grund, warum einige Leute die Operanden wechseln, wenn sie einen Wert mit einem Literal vergleichen (fester Wert wie true
, false
, 7
, 5.2
usw.), liegt daran, dass dies nicht der Fall ist Es ist möglich, einem Literal einen Wert zuzuweisen. Zum Beispiel:
... führt zu einem Fehler, der dem Programmierer sagt, dass er einen Fehler gemacht hat, den er dann beheben kann.
Ich denke, das ist nur die Art zu denken im Allgemeinen. Wenn Sie wirklich an eine tiefe if-Aussage denken, denken Sie, wenn diese Aussage wahr ist, nicht die andere Sichtweise. Es ist nicht falsch, aber in meinem Kopf, der es invers nennt, würde mich nerven und mich die Konzentration über die Aussage verlieren lassen. Ich würde sagen, es ist nur die Art, wie die Leute denken: D.
Tags und Links php comparison if-statement