Interpolation de tableaux associatifs en PHP : découverte d'un comportement inattendu
L'interpolation de chaînes de PHP offre un moyen pratique d'intégrer des variables dans des chaînes. Cependant, lorsque vous travaillez avec des tableaux associatifs, le comportement d'interpolation peut s'écarter des attentes.
Considérez l'extrait de code suivant :
<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>
Notez la dernière ligne du code :
<code class="php">print "He said $ha[key1]";</code>
Étonnamment, cette ligne s'exécute correctement, même si elle utilise une syntaxe apparemment incorrecte. Pour comprendre ce comportement, nous examinons le mécanisme d'interpolation de PHP.
PHP permet l'interpolation de variables à l'aide de deux syntaxes :
Dans le cas de tableaux associatifs, la deuxième syntaxe est explicitement recommandée dans la documentation. Cependant, le mécanisme d'interpolation de PHP inclut une exception spéciale pour accéder aux éléments de tableau associatifs dans des chaînes entre guillemets.
Si une variable entre guillemets contient une clé non entourée d'accolades, l'interpréteur suppose qu'elle fait référence à une variable associative. clé du tableau. Cette interprétation s'étend même si la clé est séparée des crochets par des espaces ou d'autres caractères d'espacement.
Ainsi, la ligne suivante est reconnue comme interpolation valable :
<code class="php">print "He said $ha[key1]";</code>
En conclusion, while il est considéré comme "correct" selon l'interpréteur PHP, ce comportement d'interpolation peut être inattendu. Cependant, la syntaxe recommandée pour interpoler les éléments d'un tableau associatif dans des chaînes reste l'utilisation d'accolades, car elle garantit un comportement cohérent et prévisible entre les différentes versions de PHP et garantit la compatibilité avec les versions futures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!