Heim > Artikel > Backend-Entwicklung > Lösung für Fehler beim Zugriff auf Array-Elemente in doppelten PHP-Anführungszeichen
Der folgende Editor wird Ihnen eine Lösung für den Fehler beim Zugriff auf Array-Elemente in doppelten PHP-Anführungszeichen geben. Er bietet eine gute Referenz und ist für das Erlernen von PHP hilfreich. Freunde, die sich für PHP interessieren, sollten dem Editor folgen, um einen Blick darauf zu werfen
Kürzlich entwickle ich ein öffentliches WeChat-Konto. In einer Schnittstelle zum Senden von Grafiken und Text muss ich Array-Elemente in XMLString zusammenfügen In
foreach ($itemArr as $key => $value){ $items .= "<item> <Title><![CDATA[$value['title']]]></Title> <Description><![CDATA[[$value['description']]]></Description> <PicUrl><![CDATA[$value['picUrl']]]></PicUrl> <Url><![CDATA[$value['url']]]></Url> </item>"; }
wird das Ergebnis wie folgt gemeldet Fehlermeldung:
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
Beurteilung aus der Fehlermeldung Es handelte sich um ein Problem mit einfachen Anführungszeichen. Nach der entscheidenden Entfernung trat kein Fehler auf. Ich bin jedoch verwirrt. Sollten Array-Elementen, deren Indizes Zeichenfolgen sind, nicht Anführungszeichen hinzugefügt 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']";
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 das Array-Element, dessen Index eine Zeichenfolge ist, in Anführungszeichen gesetzt, 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
Hier sind drei richtige Schreibweisen:
Die erste -Methode zum Schreiben der Indexzeichenfolge fügt keine Anführungszeichen hinzu. Dies bedeutet, dass das Array-Element, dessen Index die Zeichenfolgenfrucht ist, abgerufen wird.
Bei der zweiten Schreibweise der Indexzeichenfolge werden keine Anführungszeichen hinzugefügt und gleichzeitig wird die Array-Variable in ein Paar geschweifte Klammern eingeschlossen { }. Zu diesem Zeitpunkt ist Obst tatsächlich eine Konstante und keine Zeichenfolge. Es bedeutet also, dass das Array-Element, dessen Index der Fruchtkonstantenwert ist, veggie ist, sodass Karotte ausgegeben wird.
Die dritte Schreibweise besteht darin, die Zeichenfolge nicht nur durch das Hinzufügen von einfachen Anführungszeichen in Anführungszeichen zu setzen, sondern auch die Array-Variable mit einem Paar geschweifter Klammern { } zu umschließen. Auf diese Weise wird Apfel ausgegeben, wenn es darum geht, das Array-Element abzurufen, dessen Index die Zeichenfolge Fruit ist.
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
// 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
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) Die Indexzeichenfolge mit einfachen Anführungszeichen stellt die Zeichenfolge selbst dar
<pre name="code" class="php">$arr['fruit']
(2) Die Indexzeichenfolge ohne einfache Anführungszeichen stellt eine Konstante dar. Wenn die Konstante undefiniert ist, ist sie es wird als Zeichenfolge analysiert, was dem Hinzufügen einfacher Anführungszeichen entspricht.
$arr[fruit]
2. Wenn die Array-Variable in doppelte Anführungszeichen gesetzt ist,
(1) Die Indexzeichenfolge stellt die Zeichenfolge ohne einfache Anführungszeichen dar Anführungszeichen selbst
"$arr[fruit]"
(2) Fügen Sie der Array-Variablen geschweifte Klammern hinzu, um eine Konstante mit demselben Namen wie die Zeichenfolge anzugeben
"{$arr[fruit]}"
(3) Fügen Sie einfache Anführungszeichen hinzu Indexzeichenfolge und fügen Sie geschweifte Klammern zur Array-Variablen hinzu. Die Klammern stellen die Zeichenfolge selbst dar
<pre name="code" class="php"><pre name="code" class="php">"{$arr['fruit']}"
(4) Die Indexzeichenfolge wird in einfache Anführungszeichen gesetzt und die Array-Variable wird nicht in geschweifte Klammern eingeschlossen. Dies ist eine falsche Schreibweise und es wird ein Fehler gemeldet: Analysefehler: Analysefehler, erwartet T_STRING ' oder T_VARIABLE' oder T_NUM_STRING'
<pre name="code" class="php"><pre name="code" class="php">"$arr['fruit']"
Der obige Artikel basiert auf der Lösung für Der Fehler beim Zugriff auf Array-Elemente in doppelten Anführungszeichen in PHP. Dies ist der gesamte vom Editor geteilte Inhalt. Ich hoffe, er kann Ihnen einen Hinweis geben. !
Empfohlene Artikel:
Detaillierte Analyse der geringen Speicherauslastung von PHP-Arrays
So erhalten Sie die Länge eines PHP-Arrays
Detailliertes Beispiel der PHP-Array-Zugriffsschnittstelle ArrayAccess
Das obige ist der detaillierte Inhalt vonLösung für 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!