Hello,
Hier wird meine Kommentardatei ausgelsen und es wird aus jedem Datensatz
ein Array gemacht. Ist das korrekt?
korrekt
Nein, falsch.
Es wird aus jeder Zeile ein Element des Arrays $t gemacht.
Dieses Element muss man dann erst noch splitten in einzelne "Felder".
foreach($t as $zeilennummer => $zeile) ## Zeilennummer beginnt hier wahrscheinlich bei 0
{
$t[$zeilennummer] = explode('|', rtim($zeile));
}
Danach ist $t ein "Array" mit Zeilen _und_ Spalten
Erklärung:
Arrays in PHP sind in Wirklichkeit Bäume mit bidirektional verketteten Einzelelementen.
Jedes Element dieser "Perlenschnur" kann also wieder Ausgangspunkt für eine "Querschnur" sein. Die kann eine beliebige Länge haben, und ihre Elemente auch wieder selber Startpunkt für weitere Verzweigungen sein usw.
Daher kann man auch nicht einfach davon ausgehen, dass alle Elemente einer zweidimensionalen Matrix wirklich voorhanden sind.
Foreach nimmt darauf Rücksicht, indem es nicht die Indexe incrementiert, sondern sich tatsächlich an der "perlenschnur" langhangelt. Jede "Perle" kennt ja ihren Nachfolger und ihren Vorgänger.
Beim Ablaufen der Kette wird immer in $zeilennummer der Schlüssel des Elementes übergeben und in $zeile der Wert. Beide stehen auf dem Element selbst vermerkt. Die Elemente müssen nicht nach ihrem Schlüssel sortiert in der Kette hängen, dürfen es aber.
Explode nimmt sich nun solch ein Element, und zerlegt es am '|' in eine neue Kette. Diese wird dann wieder an die Stelle $t[$zeilennummer] zurückgeschrieben, ersetzt also den bisher dort eingetrageneen String im Orginal-Array.
Durch das rtrim() wird vorher das noch an der Zeile hängende Zeilenendezeichen abgeschnitten.
Die Speicherung von daten in dieser Form unterliegt diversen Beschränkungen. Die können daher auch schon mal leicht zu Fehlern führen, wenn man sie nicht beachtet.
Die Daten dürfen weder das Trennzeichen (bei Dir "|") enthalten, noch das Zeilenendezeichen.
Andere Whitespaces am Ende der Zeile (Leerzeichen, Tabs, usw) werden duruch diese einfache Methode einfach weggesschnitten.
Man muss immer die gesamte Datei lesen, mindestens aber bi hinter die gewünschte Zeile. Das ist sehr zeit- und speicherplatzraubend.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau