Maison  >  Article  >  développement back-end  >  Solution à l'erreur lors de l'accès aux éléments du tableau dans PHP entre guillemets Compétences PHP

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

jacklove
jackloveoriginal
2018-06-28 17:39:031370parcourir

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 valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l'éditeur et jetons un coup d'œ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 une chaîne XML

<.>

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>"; 
}

Le résultat est le message d'erreur suivant :

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

À en juger par le message d'erreur, il s'agit d'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, des guillemets ne devraient-ils pas être ajoutés 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;]";

Il y a deux mauvaises façons d'écrire. Lorsqu'une variable de tableau ordinaire ou une variable de tableau superglobale est placée entre guillemets doubles, faisant référence à l'élément de tableau dont l'index est une chaîne, 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

Voici trois manières correctes d'écrire :

La première façon d'écrire n'ajoute aucun guillemet à la chaîne d'index. À ce stade, cela signifie obtenir l'élément du tableau dont. index est le fruit de la chaîne 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

// 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

Dans des circonstances normales, lorsque la variable tableau n'est pas entourée de guillemets doubles, les résultats de sortie sont cohérents, que des guillemets simples soient ajoutés ou non à la chaîne d'index. Cependant, lorsqu'une constante porte le même nom que la chaîne d'index fruit. est défini, les guillemets simples ne sont pas ajoutés. Le résultat de la sortie de la chaîne d'index devient une carotte, mais l'ajout de guillemets simples est toujours une pomme.

Conclusion :

1 Lorsque la variable du tableau n'est pas placée entre guillemets,

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

<pre name="code" class="php">$arr[&#39;fruit&#39;]

(2) La chaîne d'index sans guillemets simples représente Constant, lorsque la constante n'est pas définie, elle est analysée en une chaîne, ce qui équivaut à l'ajout de guillemets simples.

$arr[fruit]

2 Lorsque la variable du tableau est placée entre guillemets doubles, ( 1) La chaîne d'index sans guillemets simples représente la chaîne elle-même

"$arr[fruit]"

(2) La variable tableau avec des accolades représente la constante avec le même nom comme chaîne

"{$arr[fruit]}"

(3) La chaîne d'index plus les guillemets simples et la variable tableau plus les accolades représentent la chaîne elle-même

<pre name="code" class="php"><pre name="code" class="php">"{$arr[&#39;fruit&#39;]}"

(4) La chaîne d'index est placée entre guillemets simples et la variable tableau n'est pas placée entre accolades, ce qui est une manière incorrecte d'écrire. 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;]"

Pièce jointe : URL de description manuelle du tableau php

http://php.net/manual/zh/lingual.types.array.php

L'article ci-dessus est basé sur la solution à l'erreur lors de l'accès aux éléments du tableau entre guillemets doubles dans PHP. C'est tout le contenu partagé par l'éditeur. J'espère qu'il pourra vous donner une référence. J'espère aussi que tout le monde soutiendra le site Web php chinois.

Articles qui pourraient vous intéresser :

php Comment supprimer un élément de valeur dans un tableau unidimensionnel astuces php


PHP implémente la fonction de traitement inverse des couleurs des images Compétences php


Un exemple d'installation d'extensions php via la méthode pecl explique les compétences php


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!

Déclaration:
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