Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur lors de l'accès aux éléments du tableau entre guillemets doubles PHP

Comment résoudre l'erreur lors de l'accès aux éléments du tableau entre guillemets doubles PHP

小云云
小云云original
2018-02-02 09:54:171431parcourir

Récemment, je développe un compte public WeChat. Dans une interface d'envoi de graphiques et de texte, les éléments du tableau doivent être fusionnés en chaînes XML. Cet article partage principalement avec vous une solution pour signaler les erreurs lors de l'accès aux éléments du tableau en PHP. guillemets doubles. Il a une très bonne valeur de référence et j’espère qu’il sera utile à tout le monde. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

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

En conséquence, le message d'erreur suivant a été signalé :

Parse error: syntax error, unexpected '' (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

D'après le message d'erreur, il semble qu'il s'agisse d'un problème avec les guillemets simples. en le supprimant, l'erreur n'a pas été signalée. 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('fruit' => 'apple', 'veggie' => 'carrot'); 
// This will not work, and will result in a parse error, such as: 
// Parse error: parse error, expecting T_STRING' or T_VARIABLE' or T_NUM_STRING' 
// This of course applies to using superglobals in strings as well 
print "Hello $arr['fruit']"; 
print "Hello $_GET['foo']";

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('fruit' => 'apple', 'veggie' => 'carrot');

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

// The following is okay, as it'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['fruit']}"; // Hello apple

$arr = array('fruit' => 'apple', 'veggie' => 'carrot');

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

// The following is okay, as it'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['fruit']}"; // Hello apple

Il existe trois façons correctes d'écrire :

La première façon d'écrire la chaîne d'index n'ajoute aucune citation marques. À ce moment, représente l'obtention de l'élément du tableau dont l'index est la chaîne fruit et génère apple.

La deuxième façon d'écrire la chaîne d'index n'ajoute aucun guillemet et encapsule en même temps la variable du tableau avec une paire d'accolades { }. À ce stade, le fruit représente en fait une constante, pas une. string. Par conséquent, cela signifie obtenir l'élément du tableau dont l'index est la valeur constante du fruit. La valeur du fruit constant est végétarien, donc la carotte est sortie.

La troisième façon d'écrire la chaîne entre guillemets consiste non seulement à ajouter des guillemets simples, mais également à envelopper la variable du tableau avec une paire d'accolades { }, ce qui signifie obtenir l'élément du tableau dont l'index est la chaîne fruit. Pomme de sortie.

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 'fruit' in... 
print $arr[fruit];  // apple 
<pre name="code" class="php">print $arr['fruit']; // apple
// This defines a constant to demonstrate what's going on. The value 'veggie'// is assigned to a constant named fruit.define('fruit', 'veggie');// Notice the difference nowprint $arr[fruit]; // carrot

print $arr['fruit']; // apple

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 entourée de guillemets doubles,

(1) Ajoutez des guillemets simples à la chaîne d'index pour représenter la chaîne elle-même

<pre name="code" class="php">$arr['fruit']

(2) La chaîne d'index sans guillemets simples représente une constante 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 représente la chaîne elle-même sans guillemets simples

"$arr[fruit]"

( 2 ) La variable tableau plus les accolades représentent la constante portant le même nom que la 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['fruit']}"

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

Recommandations associées :

php renvoie une fonction de chaîne implode() composée d'éléments de tableau

Quatre exemples de méthodes PHP pour supprimer des éléments de tableau Explication détaillée

Méthodes de classe d'opération d'élément de tableau multidimensionnel 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