Heim >Backend-Entwicklung >PHP-Tutorial >Umgang mit Fehlern beim Zugriff auf Array-Elemente in doppelten PHP-Anführungszeichen

Umgang mit Fehlern beim Zugriff auf Array-Elemente in doppelten PHP-Anführungszeichen

php中世界最好的语言
php中世界最好的语言Original
2018-05-19 11:41:502029Durchsuche

Dieses Mal zeige ich Ihnen, wie Sie mit Fehlern umgehen, wenn Sie in PHP auf Array-Elemente in doppelten Anführungszeichen zugreifen Werfen wir einen Blick darauf.

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

Das Ergebnis wird wie folgt gemeldetFehlermeldung:

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
Aus der Fehlermeldung geht hervor, dass es so ist Ist ein Problem mit einfachen Anführungszeichen, seien Sie entscheidend. Nach dem Entfernen ist kein Fehler aufgetreten. Allerdings bin ich verwirrt. Sollten die Array-Elemente, deren Indizes

string

sind, nicht in Anführungszeichen gesetzt werden? Ich habe das offizielle PHP-Handbuch gelesen, um die Beschreibung von Arrays zu lesen:

$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']";
Hier gibt es zwei falsche Schreibweisen, wenn eine gewöhnliche Array-Variable oder eine superglobale Array-Variable enthalten ist Doppelte Anführungszeichen Beim Verweisen auf ein Array-Element, dessen Index eine Zeichenfolge ist, sollten der Indexzeichenfolge keine einfachen Anführungszeichen hinzugefügt 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 Schreibweise besteht darin, die Zeichenfolge ohne Anführungszeichen zu indizieren. Zu diesem Zeitpunkt bedeutet dies, das Array-Element abzurufen, dessen Index die Zeichenfolgenfrucht und der Ausgabeapfel ist.

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, ist das Ausgabeergebnis dasselbe, egal ob oder nicht Der Indexzeichenfolge werden einfache Anführungszeichen hinzugefügt. Wenn jedoch eine Konstante mit demselben Namen wie die Indexzeichenfolgefrucht definiert wird, wird das Ausgabeergebnis der Indexzeichenfolge ohne einfache Anführungszeichen zu Karotte, aber mit einfachen Anführungszeichen ist es 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, in die sie analysiert wird eine Zeichenfolge usw. Effektiv durch Hinzufügen von einfachen Anführungszeichen.

$arr[fruit]

2. Wenn die Array-Variable in doppelte Anführungszeichen gesetzt ist, (1) Die Indexzeichenfolge stellt die Zeichenfolge selbst ohne einfache Anführungszeichen dar

"$arr[fruit]"

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

"{$arr[fruit]}"

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

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

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

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

PHP-Handbuch

Array-Beschreibungs-URLIch glaube, Sie haben die Methode danach gemeistert Lesen Sie den Fall in diesem Artikel. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erklärung der Schritte zum Parsen von XML und Generieren von SQL-Anweisungen in PHP


Detaillierte Erklärung von die Schritte zum Implementieren der QQ-Anmeldung in PHP

Das obige ist der detaillierte Inhalt vonUmgang mit Fehlern 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!

Stellungnahme:
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