Heim > Backend-Entwicklung > PHP-Tutorial > Warum funktioniert die String-Interpolation von PHP mit assoziativen Arrays auch ohne geschweifte Klammern?

Warum funktioniert die String-Interpolation von PHP mit assoziativen Arrays auch ohne geschweifte Klammern?

DDD
Freigeben: 2024-10-30 12:39:02
Original
885 Leute haben es durchsucht

 Why does PHP's string interpolation work with associative arrays even without curly braces?

Interpolation assoziativer Arrays in PHP: Unerwartetes Verhalten aufdecken

Die String-Interpolation von PHP bietet eine praktische Möglichkeit, Variablen in Strings einzubetten. Bei der Arbeit mit assoziativen Arrays kann das Interpolationsverhalten jedoch von den Erwartungen abweichen.

Beachten Sie den folgenden Codeausschnitt:

<code class="php">$ha = ['key1' => 'Hello to me'];

print $ha['key1'];   // correct (usual way)
print $ha[key1];     // Warning, works (use of undefined constant)

print "He said {$ha['key1']}"; // correct (usual way)
print "He said {$ha[key1]}";   // Warning, works (use of undefined constant)

print "He said $ha['key1']";   // Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[ key1 ]";   // Error, unexpected T_ENCAPSED_AND_WHITESPACE
print "He said $ha[key1]";     // !! correct (How Comes?)</code>
Nach dem Login kopieren

Beachten Sie die letzte Zeile des Codes:

<code class="php">print "He said $ha[key1]";</code>
Nach dem Login kopieren
Nach dem Login kopieren

Überraschenderweise wird diese Zeile korrekt ausgeführt, obwohl sie eine scheinbar falsche Syntax verwendet. Um dieses Verhalten zu verstehen, beschäftigen wir uns mit dem Interpolationsmechanismus von PHP.

PHP ermöglicht die Variableninterpolation mit zwei Syntaxen:

  1. Strings in doppelten Anführungszeichen: „$var“
  2. Geschweifte Klammern innerhalb von Strings in doppelten Anführungszeichen: „${$var}“

Bei assoziativen Arrays wird in der Dokumentation explizit die zweite Syntax empfohlen. Der Interpolationsmechanismus von PHP enthält jedoch eine spezielle Ausnahme für den Zugriff auf assoziative Array-Elemente innerhalb von Zeichenfolgen in doppelten Anführungszeichen.

Wenn eine Variable in doppelten Anführungszeichen einen Schlüssel enthält, der nicht in geschweiften Klammern eingeschlossen ist, geht der Interpreter davon aus, dass es sich um einen Assoziativ handelt Array-Schlüssel. Diese Interpretation gilt auch dann, wenn der Schlüssel durch Leerzeichen oder andere Leerzeichen von den eckigen Klammern getrennt ist.

Damit wird die folgende Zeile als gültige Interpolation erkannt:

<code class="php">print "He said $ha[key1]";</code>
Nach dem Login kopieren
Nach dem Login kopieren

Abschließend while Da es laut PHP-Interpreter als „richtig“ gilt, kann dieses Interpolationsverhalten unerwartet sein. Die empfohlene Syntax zum Interpolieren assoziativer Array-Elemente in Strings bleibt jedoch die Verwendung von geschweiften Klammern, da sie ein konsistentes und vorhersehbares Verhalten über verschiedene PHP-Versionen hinweg gewährleistet und die Kompatibilität mit zukünftigen Versionen gewährleistet.

Das obige ist der detaillierte Inhalt vonWarum funktioniert die String-Interpolation von PHP mit assoziativen Arrays auch ohne geschweifte Klammern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage