Heim > Backend-Entwicklung > PHP-Tutorial > So beheben Sie den Fehler beim Zugriff auf Array-Elemente in doppelten PHP-Anführungszeichen

So beheben Sie den Fehler beim Zugriff auf Array-Elemente in doppelten PHP-Anführungszeichen

小云云
Freigeben: 2023-03-19 20:34:01
Original
1471 Leute haben es durchsucht

Vor kurzem entwickle ich ein öffentliches WeChat-Konto, in dem Array-Elemente in XML-Strings gespleißt werden müssen. Dieser Artikel teilt Ihnen hauptsächlich eine Lösung für die Fehlerberichterstattung beim Zugriff auf Array-Elemente in PHP Doppelte Anführungszeichen haben einen sehr guten Referenzwert und ich hoffe, dass sie für alle hilfreich sein werden. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.

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>"; 
}
Nach dem Login kopieren

Als Ergebnis wurde die folgende Fehlermeldung gemeldet:

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
Nach dem Login kopieren

Aus der Fehlermeldung geht eindeutig hervor, dass es sich um ein Problem mit einfachen Anführungszeichen handelt Beim Entfernen wurde der Fehler nicht gemeldet. Ich bin jedoch verwirrt. Sollten Array-Elemente, deren Indizes Zeichenfolgen sind, nicht in Anführungszeichen gesetzt werden? Ich habe das offizielle PHP-Handbuch gelesen, um die Beschreibung von Arrays zu lesen. Es gibt einen Absatz wie diesen:

$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']";
Nach dem Login kopieren

Es gibt zwei falsche Schreibweisen, wenn eine gewöhnliche Array-Variable oder eine superglobale Array-Variable enthalten ist in einem Double Wenn in Anführungszeichen eingeschlossen, wird auf das Array-Element verwiesen, dessen Index eine Zeichenfolge ist, und die Indexzeichenfolge sollte nicht in einfache Anführungszeichen gesetzt werden. Wie schreibt man es also richtig? Also suchte ich weiter im offiziellen Handbuch und fand die folgende Aussage:

$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
Nach dem Login kopieren

Es gibt drei richtige Schreibweisen:

Die erste Schreibweise der Indexzeichenfolge fügt keine Anführungszeichen hinzu Markiert zu diesem Zeitpunkt das Abrufen des Array-Elements, dessen Index die Zeichenfolge Fruit ist, und gibt Apple aus.

Die zweite Art, die Indexzeichenfolge zu schreiben, fügt keine Anführungszeichen hinzu und umschließt gleichzeitig die Array-Variable mit einem Paar geschweifter Klammern { }. Zu diesem Zeitpunkt stellt Fruit tatsächlich eine Konstante dar, nicht a string. Daher bedeutet dies, dass das Array-Element abgerufen wird, dessen Index der Fruchtkonstantenwert ist, sodass Karotte ausgegeben wird.

Die dritte Möglichkeit, die in Anführungszeichen gesetzte Zeichenfolge zu schreiben, besteht darin, nicht nur einfache Anführungszeichen hinzuzufügen, sondern auch die Array-Variable mit einem Paar geschweifter Klammern { } zu umschließen, was bedeutet, dass das Array-Element erhalten wird, dessen Index die Zeichenfolgenfrucht ist. Ausgabeapfel.

Später habe ich weiter gesucht und diesen Code gefunden:

// 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
Nach dem Login kopieren
// 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
Nach dem Login kopieren

Unter normalen Umständen, wenn die Array-Variable nicht in doppelte Anführungszeichen gesetzt ist, ob ein einzelnes hinzugefügt werden soll zur Indexzeichenfolge Die Ausgabeergebnisse der Anführungszeichen sind die gleichen wie bei Apfel. Wenn jedoch eine Konstante mit demselben Namen wie die Indexzeichenfolge Frucht definiert wird, wird das Ausgabeergebnis der Indexzeichenfolge ohne einfache Anführungszeichen zu Karotte, jedoch mit einfachen Anführungszeichen Anführungszeichen, es ist immer noch Apfel.

Schlussfolgerung:

1. Wenn die Array-Variable nicht in doppelte Anführungszeichen gesetzt ist,

(1) Fügen Sie der Indexzeichenfolge einfache Anführungszeichen hinzu, um die Zeichenfolge selbst darzustellen

<pre name="code" class="php">$arr['fruit']
Nach dem Login kopieren

(2) Die Indexzeichenfolge ohne einfache Anführungszeichen stellt eine Konstante dar. Wenn die Konstante undefiniert ist, wird sie in eine Zeichenfolge analysiert, was dem Hinzufügen einfacher Anführungszeichen entspricht.

$arr[fruit]
Nach dem Login kopieren

2. Wenn die Array-Variable in doppelte Anführungszeichen eingeschlossen ist,

(1) Die Indexzeichenfolge stellt die Zeichenfolge selbst ohne einfache Anführungszeichen dar

"$arr[fruit]"
Nach dem Login kopieren

( 2 ) Die Array-Variable plus geschweifte Klammern stellt die Konstante mit demselben Namen wie die Zeichenfolge dar

"{$arr[fruit]}"
Nach dem Login kopieren

(3) Die Indexzeichenfolge plus einfache Anführungszeichen und die Array-Variable plus geschweifte Klammern stellen die Zeichenfolge selbst dar

<pre name="code" class="php"><pre name="code" class="php">"{$arr['fruit']}"
Nach dem Login kopieren

(4) Die Indexzeichenfolge ist in einfache Anführungszeichen gesetzt und die Array-Variable ist nicht in geschweifte Klammern eingeschlossen, was eine falsche Schreibweise ist. Der Fehler wird gemeldet: Parse-Fehler: Parse-Fehler, erwartet T_STRING‘. oder T_VARIABLE' oder T_NUM_STRING'

<pre name="code" class="php"><pre name="code" class="php">"$arr['fruit']"
Nach dem Login kopieren

Verwandte Empfehlungen:

php gibt eine String-Funktion implode() zurück, die aus Array-Elementen besteht

Vier Beispiele für PHP-Methoden zum Löschen von Array-Elementen. Ausführliche Erklärung

Methoden der mehrdimensionalen PHP-Array-Element-Operationsklasse

Das obige ist der detaillierte Inhalt vonSo beheben Sie den Fehler beim Zugriff auf Array-Elemente in doppelten PHP-Anführungszeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage