2009-05-14 7 views
0

Ich sehe dieses Problem in meinem PHP-Code wieder und wieder, und ich habe nie verstanden, was passiert.multidimensionale Array-Schlüssel, die einzelne Zeichen zurückgeben, keine Werte

$val = $matches[1][$i] 

In diesem Beispiel $ i = 0 (set in einem for-Schleife) und der in dieser Dimension des Arrays gehaltene Wert ist eine Zeichenfolge. Anstatt dass dieser String $ val zugewiesen wird, wird $ val dem 0. (ersten) Zeichen in der Zeichenfolge zugewiesen. Wenn $ i = 1, wird $ val das erste (zweite) Zeichen in der Zeichenkette usw. zugewiesen.

Anstatt die Zeichenkette zurückzugeben, warum behandelt PHP dies wie eine Teilzeichenkette? Wie kann ich meinen Zeichenfolgenwert anstelle eines einzelnen Zeichens in dieser Zeichenfolge abrufen?

+0

Wie definieren Sie die Array-Übereinstimmungen? Bitte posten Sie reichlich von der Schleife mit anstößigen Code-Schnipsel – Louis

Antwort

4

Sind Sie sicher, dass es sich um ein multidimensionales Array handelt? Ich denke, wenn Sie auf einen String wie ein Array zugreifen, wird das Zeichen an der Schlüsselposition in der Zeichenfolge zurückgegeben, und das könnte Ihr Problem sein. Überprüfen Sie Ihre Zuweisungen und whatnot und stellen Sie sicher, dass Sie $ strings [1] anstatt eines Arrays von Zeichenfolgen versehentlich eine Zeichenfolge zuweisen.

+0

Danke. Ich rief preg_match() anstelle von preg_match_all() an, so dass mein Array schließlich nicht mehrdimensional war. In der Zukunft ist es gut zu wissen, dass dies einen String-Zugriff anzeigt. Vielen Dank! –

0

Das ist seltsam! Das habe ich noch nie zuvor erlebt. Ich frage mich, ob das Multidimensionale wirklich nur ein normales Array ist. Es könnte Ihren [$ i] verwenden, um einen Teilstring zurückzugeben, wenn es nur eine einzelne Dimension ist.

-1

Geck, weiß, dass ich seine sehr spät, aber überprüfen Sie bitte

$matches[] = "value"; 

Wenn Sie [] fehlt, dann würde es als String behandelt werden und so sollte das Problem sein.

+1

Die Fragen wurden bereits beantwortet ... –

Verwandte Themen