PHP String Vergleich ohne Anführungszeichen

7

Von dem, was ich über PHP weiß, ist die folgende Syntax nicht legal:

%Vor%

Es sollte stattdessen geschrieben werden als:

%Vor%

Das erste Beispiel funktioniert jedoch gut. Wer weiß warum?

    
tronman 04.05.2010, 18:16
quelle

6 Antworten

13

Normalerweise würde es als eine Konstante interpretiert werden, aber wenn PHP eine Konstante mit diesem Namen nicht finden kann, nimmt es an, dass es trotz des Fehlens von Anführungszeichen ein String-Literal ist. Dies erzeugt eine E_NOTICE-Nachricht (die möglicherweise nicht sichtbar ist, abhängig von Ihrer Fehlermeldungsstufe); etwas wie:

  

Hinweis: Verwendung von undefinierter Konstante Ja - angenommen in der script.php in Zeile 3

Grundsätzlich ist PHP einfach zu nachsichtig.

    
Will Vousden 04.05.2010, 18:18
quelle
8

Kurz gesagt, PHP verhält sich so, als wären die Zitate da.

Wenn PHP etwas nicht als reserviertes Token erkennt, behandelt es es als String-Literal.

Im Fehlerprotokoll wird eine Warnung angezeigt.

    
Greg 04.05.2010 18:18
quelle
1

Der erste ist keine Zeichenkette.

Und es funktioniert nicht gut:

%Vor%

Es ist ein Vermächtnis aus der Zeit, als PHP noch ein "Pretty home page" Form-Interpreter war und heutzutage dringend davon abgeraten wird.

    
Your Common Sense 04.05.2010 18:19
quelle
1

Sie müssen sowohl error_reporting zeigen als auch display_errors gesetzt haben.

%Vor%     
Harold1983- 04.05.2010 18:22
quelle
0

In PHP würde Yes als Konstante behandelt werden. Wenn die Konstante nicht definiert ist, wird davon ausgegangen, dass Sie die Zeichenfolge 'Ja' gemeint haben. Es sollte eine Benachrichtigung generieren, wenn Sie sie aktiviert haben.

    
dmertl 04.05.2010 18:20
quelle
0

PHP konvertiert Ja intern in 'Ja', wenn die Konstante Ja nicht definiert ist.

Btw .. Wenn das, was Sie wollen, vergleicht, wenn $ s hat "Ja" als Wert ein ist eine Zeichenfolge, dann müssen Sie

a) benutze strcmp oder b) Verwenden Sie den Identitätsoperator "==="

    
Cristian Rodriguez 04.05.2010 18:47
quelle

Tags und Links