Solution à l'erreur lors de l'accès aux éléments du tableau entre guillemets doubles PHP

韦小宝
Libérer: 2023-03-19 20:24:02
original
1486 Les gens l'ont consulté

L'éditeur suivant partagera avec vous une solution à l'erreur lors de l'accès aux éléments du tableau entre guillemets PHP. Il a une bonne référence et une bonne valeur pour apprendre PHP. J'espère qu'il sera utile à tout le monde. Les amis intéressés par PHP devraient suivre l'éditeur pour y jeter un œil

Récemment, je développe un compte public WeChat Dans une interface d'envoi de graphiques et de texte, j'ai besoin de fusionner des éléments de tableau en chaîne XML. Dans

foreach ($itemArr as $key => $value){ 
  $items .= "<item> 
  <Title><![CDATA[$value[&#39;title&#39;]]]></Title>  
  <Description><![CDATA[[$value[&#39;description&#39;]]]></Description> 
  <PicUrl><![CDATA[$value[&#39;picUrl&#39;]]]></PicUrl> 
  <Url><![CDATA[$value[&#39;url&#39;]]]></Url> 
  </item>"; 
}
Copier après la connexion

le résultat est le suivant Message d'erreur :

Parse error: syntax error, unexpected &#39;&#39; (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in D:\hhp\wamp\www\weixin\wx_sample.php on line 146
Copier après la connexion

À en juger par le message d'erreur C'est un problème avec les guillemets simples. Après l'avoir supprimé de manière décisive, il n'y a pas d'erreur. Cependant, je suis confus. Ne devrait-on pas ajouter des guillemets aux éléments du tableau dont les indices sont des chaînes ? Je suis allé dans le manuel PHP officiel pour vérifier la description des tableaux. Il y a un paragraphe comme celui-ci :

$arr = array(&#39;fruit&#39; => &#39;apple&#39;, &#39;veggie&#39; => &#39;carrot&#39;); 
// This will not work, and will result in a parse error, such as: 
// Parse error: parse error, expecting T_STRING&#39; or T_VARIABLE&#39; or T_NUM_STRING&#39; 
// This of course applies to using superglobals in strings as well 
print "Hello $arr[&#39;fruit&#39;]"; 
print "Hello $_GET[&#39;foo&#39;]";
Copier après la connexion

Il existe deux mauvaises façons d'écrire lorsqu'une variable de tableau ordinaire ou une variable de tableau super globale est contenue. dans un double Lorsqu'il est mis entre guillemets, l'élément du tableau dont l'index est une chaîne est référencé et la chaîne d'index ne doit pas être ajoutée avec des guillemets simples. Alors, quelle est la bonne façon de l’écrire ? J'ai donc continué à chercher dans le manuel officiel et j'ai trouvé la déclaration suivante :

$arr = array(&#39;fruit&#39; => &#39;apple&#39;, &#39;veggie&#39; => &#39;carrot&#39;);

// This defines a constant to demonstrate what&#39;s going on. The value &#39;veggie&#39;
// is assigned to a constant named fruit.
define(&#39;fruit&#39;, &#39;veggie&#39;);

// The following is okay, as it&#39;s inside a string. Constants are not looked for// within strings, so no E_NOTICE occurs hereprint "Hello $arr[fruit]";   // Hello apple// With one exception: braces surrounding arrays within strings allows constants// to be interpretedprint "Hello {$arr[fruit]}";  // Hello carrotprint "Hello {$arr[&#39;fruit&#39;]}"; // Hello apple

$arr = array(&#39;fruit&#39; => &#39;apple&#39;, &#39;veggie&#39; => &#39;carrot&#39;);

// This defines a constant to demonstrate what&#39;s going on. The value &#39;veggie&#39;
// is assigned to a constant named fruit.
define(&#39;fruit&#39;, &#39;veggie&#39;);

// The following is okay, as it&#39;s inside a string. Constants are not looked for
// within strings, so no E_NOTICE occurs here
print "Hello $arr[fruit]";   // Hello apple

// With one exception: braces surrounding arrays within strings allows constants
// to be interpreted
print "Hello {$arr[fruit]}";  // Hello carrot
print "Hello {$arr[&#39;fruit&#39;]}"; // Hello apple
Copier après la connexion

Voici trois manières correctes d'écrire :

La première façon d'écrire la chaîne d'index n'ajoute aucun guillemets Pour le moment, cela signifie obtenir l'élément du tableau dont l'index est la chaîne fruit et la pomme de sortie.

La deuxième façon d'écrire la chaîne d'index n'ajoute aucun guillemet, et en même temps, la variable tableau est entourée d'une paire d'accolades { }. À l'heure actuelle, fruit Cela représente en fait une constante, pas une chaîne, cela signifie donc obtenir l'élément du tableau dont l'index est la valeur constante du fruit. La valeur de la constante fruit est végétarienne, donc la carotte est sortie.

La troisième façon d'écrire consiste à citer la chaîne en ajoutant non seulement des guillemets simples, mais également en enveloppant la variable du tableau avec une paire d'accolades { }. De cette façon, lorsqu'il s'agit d'obtenir l'élément du tableau dont l'index est la chaîne fruit, affichez apple.

Plus tard, j'ai continué à chercher et j'ai trouvé ce morceau de code :

// Incorrect. This works but also throws a PHP error of level E_NOTICE because 
// of an undefined constant named fruit 
//  
// Notice: Use of undefined constant fruit - assumed &#39;fruit&#39; in... 
print $arr[fruit];  // apple 
<pre name="code" class="php">print $arr[&#39;fruit&#39;]; // apple
Copier après la connexion
// This defines a constant to demonstrate what&#39;s going on. The value &#39;veggie&#39;// is assigned to a constant named fruit.define(&#39;fruit&#39;, &#39;veggie&#39;);// Notice the difference nowprint $arr[fruit]; // carrot

print $arr[&#39;fruit&#39;]; // apple
Copier après la connexion

Dans des circonstances normales, lorsque la variable tableau n'est pas entourée de guillemets doubles, s'il faut ajouter un simple à la chaîne d'index Les résultats de sortie des guillemets sont les mêmes que ceux de pomme, mais lorsqu'une constante portant le même nom que la chaîne d'index fruit est définie, le résultat de sortie de la chaîne d'index sans guillemets simples devient carotte, mais avec un seul entre guillemets, c'est toujours une pomme.

Conclusion :

1. Lorsque la variable du tableau n'est pas placée entre guillemets doubles, <🎜. >

(1) La chaîne d'index avec guillemets simples représente la chaîne elle-même

<pre name="code" class="php">$arr[&#39;fruit&#39;]
Copier après la connexion
(2) La chaîne d'index sans guillemets simples représente une constante Lorsque la constante n'est pas définie, elle l'est. analysé comme une chaîne, équivalent à l'ajout de guillemets simples.

$arr[fruit]
Copier après la connexion

2. Lorsque la variable du tableau est placée entre guillemets doubles,

(1) La chaîne d'index représente la chaîne sans simple. guillemets. Lui-même

"$arr[fruit]"
Copier après la connexion
(2) Ajoutez des accolades à la variable du tableau pour indiquer une constante portant le même nom que la chaîne

"{$arr[fruit]}"
Copier après la connexion
(3) Ajoutez des guillemets simples au chaîne d'index et ajoutez des accolades à la variable tableau Les crochets représentent la chaîne elle-même

<pre name="code" class="php"><pre name="code" class="php">"{$arr[&#39;fruit&#39;]}"
Copier après la connexion

(4) La chaîne d'index est placée entre guillemets simples et la variable tableau n'est pas entourée d'accolades, ce qui est une manière d'écrire incorrecte, et une erreur est signalée : Erreur d'analyse : erreur d'analyse, attente de T_STRING 'ou T_VARIABLE' ou T_NUM_STRING'

<pre name="code" class="php"><pre name="code" class="php">"$arr[&#39;fruit&#39;]"
Copier après la connexion
L'article ci-dessus est basé sur la solution à l'erreur lors de l'accès aux éléments du tableau entre guillemets en php. C'est tout le contenu partagé par l'éditeur, j'espère qu'il pourra vous y référer ! !

Articles recommandés :

Analyse détaillée de la faible utilisation de la mémoire des tableaux PHP

Comment obtenir la longueur du tableau php

Exemple détaillé de l'interface d'accès au tableau PHP ArrayAccess

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal