Frage Warum ist $ M-; syntaktisch gültig und was macht es?


Ich betrachte mich selbst nicht als PHP-Experte, aber ich habe mehrere Seiten entworfen, die jetzt jeweils ein paar tausend Zeilen Code enthalten. Für mein aktuelles Projekt, das für eine Spieleseite gedacht ist, habe ich auf eine bestehende Funktion zurückgegriffen, die die Zeile enthält

$M–;

Jetzt mein grundlegendes Verständnis von PHP sagt mir, dass dies nicht funktioniert, da es sein sollte - für kurze -1. Aber es ist kein Bindestrich, das Skript läuft ohne Fehler (error_reporting (E_ALL)) aber Echo $M Vorher und Nachher gibt mir den gleichen Wert.

Also, was macht es und warum bekomme ich keinen Fehler?


11
2017-10-25 09:10


Ursprung


Antworten:


Das ist ein Bindestrich, der zu PHP nur ein zufälliges Byte ohne spezifische Bedeutung ist. $M–oder in UTF-8-Codierung 4DE28093, ist ein gültiger Variablenname. So wie $漢字.

Eine einzelne Variable initialisiert diese Variable einfach auf null wenn es nicht schon existiert, Die Linie macht nichts sonst.


6
2017-10-25 09:16



Dieser Code von Ihrem werden Ergebnis in einer Nachricht. Erstens, weil das kein Minuszeichen ist  vs - <- anders (es sei denn, Sie haben einen Variablennamen definiert M–).

Hinweis: Undefinierte Variable: M- in

Zweitens, selbst wenn es ein Minuszeichen wäre, würde es eine Nachricht ausspucken.

Error: Syntax Error, unerwartet ';' im

Wenn überhaupt, wird nur angezeigt, dass Sie die vollständige Fehlerberichterstattung nicht ordnungsgemäß aktiviert haben oder dass Sie Unicode-Zeichen in Variablennamen verwenden, nur um sich mit anderen Personen zu vermengen, die Ihren Code lesen (einschließlich sich selbst). ;)

AKTUALISIEREN

Ich habe deinen Code ein wenig falsch gelesen. Was passiert ist, dass Sie die Variable initialisieren M– wenn diese Linie so gemacht wird M– wird sein null.


2
2017-10-25 09:14



Sieht so aus, als könnte es das als interpretieren $M - null; $ M minus Null im Wesentlichen. Was würde nichts tun?


-1
2017-10-25 09:12