Hello,
wenn man jetzt mal nur diesen teil betrachtet, würde meine anfängerlogik folgendes machen:
foreach($filewelchesexplodedistmit\n as $zeile)
Scheißnahmeverdammterdendudafuerdievariablegenommenhastbesonderswegendesbackslash :-)
{
$zeile = explode("|", $zeile);
if($zeile[0] == "hallo")
{
$zeile[1] = "bin drin";
}
}
foreach() ist etwas gewöhnungsbedürftig, aber sehr effektiv und schnell.
# $_file ist als Array angelegt und belegt mit Daten.
foreach($_file as $key => $zeile)
{
$_file[$key] = explode('|',$zeile);
if($_file[$key][0] == "hallo")
{
$_file[$key][1] = "bin drin";
}
}
$_file innerhalb der foreach()-Anweisung (Schleifenkonstrukt, _nicht_ Funktion) ist ein anderes $_file, als das noch vor der Schleife benutzte. Durch foreach() wird eine temporäre Kopie von $_file angelegt, mit der die Schliefe arbeitet.
Die Schleifenargumente $key und $val (kannst Du nennen, wie Du willst: hier $key und $zeile) werden bei jedem Durchlauf der Schleife neu belegt, also überschrieben. Die letze "Füllung" steht nach der Schliefe noch zur Verfügung, was sehr nützlich sein kann.
Wenn Du nun aber innerhalb der Schleife das durchlaufene ORIGINAL-Array $_file bearbeiten willst, dann musst Du das durch direkte Benutzung auch tun. So, wie ich es oben gezeigt habe, werden die Elemente des Original-Arrays bearbeitet. An die Kopie, die sich foreach() anlegt kommst Du selber nicht direkt heran, sondern immer nur an ihre momentanten Auszüge (ebenfalls nur Kopien) $key und $val.
Das Ganze ist sehr sinnvoll, da man sich sonst leicht den Ast absägen könnte, auf dem man sitzt oder aber rekursive Verläufe schaffen würde. neure PHPs können auch mit einer Referenz in foreach() arbeiten, die Verwendung ist aber aus den erwähnten Gründen nur mit größter Aufmerksamkeit empfohlen.
Wenn man es erst einmal verstanden hat, foreach zu verwenden, kann es eine der Lieblings"funktionen" werden.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
