Interpolation assoziativer Arrays in PHP: Ein unerwartetes Verhalten
Bei der Interpolation assoziativer Array-Elemente in PHP können bestimmte Verhaltensweisen Überraschung hervorrufen. Betrachten Sie das folgende Beispiel:
<code class="php">$ha = array('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>
Seltsamerweise scheint die letzte Zeile gültiger PHP-Code zu sein. Warum ist das so?
Erklärung
Vertrauen Sie der scheinbar ungewöhnlichen Syntax. Laut offizieller Dokumentation werden alle Methoden der Variableninterpolation unterstützt. Dazu gehört der Zugriff auf Array-Elemente innerhalb von Zeichenfolgen in doppelten Anführungszeichen, ohne sie in geschweifte Klammern zu setzen.
Der Grund für dieses besondere Verhalten ist vielleicht nicht ganz offensichtlich, aber es rührt von der historischen Entwicklung von PHP her, in der sich unweigerlich Inkonsistenzen eingeschlichen haben. Dennoch ist diese Funktion zuverlässig und weithin als gültige PHP-Syntax akzeptiert.
Das obige ist der detaillierte Inhalt vonWarum erlaubt PHP die direkte Interpolation assoziativer Array-Elemente in Strings in doppelten Anführungszeichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!