ARRAY's
Reto Strub
- php
0 Mirko Hansen0 Sönke Tesch0 fastix
Hallo zusammen, ich habe folgendes Problem.
Ich lese eine Zeile aus und teile Sie in einzelne Variabeln ein:
$Feld = explode(" ",$zeile);
Dumm ist nur, dass ich mehrere Dieser Zeilen Habe. Nun möchte ich alle Zeilen (Alle Felder einer Zeile) in die gleiche Variable einpacken:
Ich hab folgendes probiert:
$Feld[1] = "Admin";
$Feld[2] = "Supervisor";
$Feld[3] = "Reto";
$Feld[4] = "Strub";
for ($x=1; $x<count($Feld); $x++)
{
$user[$i][$x]=$Feld[$x];
echo("$user[$i][$x] = $user[$i][$x]<BR>\n");
}
Als Antwort auf echo, bekomme ich: "Array[1]" oder "Array[2]" ...
Warum?
MfG Reto
Hallo Reto
Als Antwort auf echo, bekomme ich: "Array[1]" oder "Array[2]" ...
Warum?
Ich vermute, dass das daran liegt, dass sich dieser Array-im-Array nicht mit dem Variable-im-String verträgt. Das PHP wird das $user[$i][$x] nur bis zum [$i] als Variable interpretieren und den Rest als String ausspucken, daher die Ausgabe "Array" (das ist das Ergebnis von $user[$i] gefolgt von deinem String "[$x]". Folgende Änderung sollte aber dein gewünschtes Ergebnis bewirken:
echo("$user[$i][$x] = ".$user[$i][$x]."<BR>\n");
MfG,
Mirko Hansen
echo("$user[$i][$x] = $user[$i][$x]<BR>\n");
Als Antwort auf echo, bekomme ich: "Array[1]" oder "Array[2]" ...
Warum?
Nie, nie, niemals benutze die Möglichkeit, Feldvariablen in Zeichenketten einzubetten. Was dabei rauskommt, wenn man nicht aufpasst, siehst Du selbst.
Mach's lieber ordentlich und verkette die Teile miteinander:
echo("$user[$i][$x] = ".$user[$i][$x]."<BR>\n");
Oder gleich richtig (mit Sicherheitsbonus):
echo("$user[$i][$x] = ".htmlentities($user[$i][$x])."<br>\n");
Technisch gesehen ist Dein Problem, daß die Variablenangabe aus Sicht des Parsers bei der ersten eckigen Klammer endet. "Array[1]" besteht deshalb aus den Teilen "$user[$i]" (=>"Array") und "[$x]" (=>"[1]").
Gruß,
soenk.e
Nie, nie, niemals benutze die Möglichkeit, Feldvariablen in Zeichenketten einzubetten. Was dabei rauskommt, wenn man nicht aufpasst, siehst Du selbst.
Also ich halte das eher für einen PHP-Bug. Jeder normale Mensch kommt zu der Ansicht, dass wenn $user[$i] in der Zeichenkette funktioniert, auch $user[$i][$x] gehen müsste. Dass dem gewiefteren Progger die Rückgabe Array[x] ein Licht aufgehen lässt ist was ganz anderes.
Mach's lieber ordentlich und verkette die Teile miteinander:
Ja. Aber das macht leider immer wieder eine Menge Arbeit und ist so fürchterlich fehlerträchtig *heul*
:)
fastix
Mach's lieber ordentlich und verkette die Teile miteinander:
Ja. Aber das macht leider immer wieder eine Menge Arbeit und ist so fürchterlich fehlerträchtig *heul*
Einspruch: Wenn man sich mal anschaut, wieviele Gästebücher, Boards und Foren Eingaben mit <script>, <style> und Co. zulassen, ist die einzig nennenswert fehlerträchtige Angelegenheit die Faulheit mancher Programmierer, die lieber Variablen in Zeichenketten einbetten, anstatt in zwei Sekunden ein paar Tasten mehr zu drücken, um die Zeichenkette zu unterbrechen und die Variable per htmlentities() auszugeben :>
Gruß,
soenk.e