File, Array - "abschneiden"

ChrisLem

Mitglied
Hallo,

nehmen wir an ich habe eine Datei datei.txt, in dieser Datei sind mehrere Zeilen. Jetzt will ich folgendes auslesen und in Arrays speichern, die Abschnitte(unten Farbig geschrieben) zwischen den "||" (bzw ein anderes Zeichen oder eine andere Zeichenfolge) also in dem Falle :

Newseintrag1 ||blablablablabla ||19.03.2001
Newseintrag2||blablablablabla ||20.03.2001

Jetzt will ich für jede Zeile ein Array und in dem Array siehst dann so aus

PHP:
$news[1] = "Newseintrag1";
$news[2] = "blablablablablabla";
$news[3] = "19.03.2001";
$news[4] = "Newseintrag2";
....

bzw mit Mehrdimensionalen Arrays ??? Wie auch immer man sie abfragt...

Wie mach ich das???

Nehmen wir an ich verwende folgenden code:

PHP:
<?PHP
  $test = file("datei.txt");
  foreach ($test as $t)
  {
    $news[i] = $t;
    $i++;
  }
?>

Dann hab ich ja die einzelnen Zeilen in nem array... aber noch nicht Die einzelnen Abschnitte wie geht das? Und wie kann ich Multidimensionale Arrays abfragen wenn ich folgende Zuweisung z.B. hab

PHP:
  $news[$i] = array[$x, $y, $z];

Wie kann ich da $x,$y oder $z abfragen?

MFG Christian

PS: Ich weiss das sind viele dumme fragen aber ich bin halt PHP n00b...
 
Zuletzt bearbeitet:
hmn...
$news=explode("||",$test);

dann kannst du die einzelnen teile mit $news[wert] ansprechen
ich denke mal dass dann ans ende von jeder zeile noch ein || muss oder so
 
PHP:
<?php
$file = file("datei.txt");
foreach ($file as $row)
{
  $row_arr = explode('||', $row);
  foreach($row_arr as $entry){
    $news[$i] = $entry;
    $i++;
  }
}
?>

so hast du ein array.. denke ich.. [*,_,*]
 
Thx und wie kann ich dann die einzelnen "Datensätze" ausgeben lassen? Oder ist das kein Multidimensionaler Array?

MFG Christian
 
ich denk mal so:
PHP:
$news[0] = "Newseintrag1";
$news[1] = "blablablablablabla";
$news[2] = "19.03.2001";
$news[3] = "Newseintrag2";
:)


aber nur wenn ich das richtig geblickt habe :)
hab noch nich so nen plan von php :D
 
Zuletzt bearbeitet:
'Ähm ein mehrdimensionales Array wäre z.B.

PHP:
$array[0][0]
$array[0][1]
$array[0][2]
...
$array[n][n]

ein 1 dimensionales ( $array[n] ) reicht Dir um die Funktionalität zu erhalten die Du brauchst.
Und Zugriff is doch nich das Prob , Du weisst dass [0] für z.B. Name steht [1] für den Eintrag und [2] für Das Datum.
Nur als Beispiel.
Das heisst dass für den nächsten Eintrag gilt
[3] Name
[4] Eintrag
[5] Datum
usw...
aber das braucht Dich gar nicht kümmern solange die Anzahl nur immer gleich ist kannsu Du es ganz einfach ausgeben , z.B.

PHP:
for ( $i=0 ; $i < sizeOf($array) ; $i+3 )
{
echo " User : ".$array[$i]." schrieb ".$array[$i+1]." am ".$array[$i+2];
}

Müsste dann gehen , eleganter isses natürlich wenn Du nen 2 dimensioales array hast , dann sieht die for schleife nicht so ******** aus mit $i+1 etc.
Kannst ja das 1 dimensionale in nen 2 dimensionales umwandeln , dann hast Du etwas mehr Überblick beim ausgeben ...
könnteste mit ner ähnlichen for Schleife wie da oben machen , also einmal hassu dann sicher ne gay for schleife aber mir wär's lieber ich hab die beim umwandeln als beim Ausgeben => Wartungefreier und übersichtlicher.
 
Das ist mir schon klar, aber ich hätte gern z.B. ein Zählen von 1-10 für jeden News-Eintrag, und jeder Newseintrag hat meinetwegen 5 unterpunkte wie betreff etc..., so das ich alles in einer Zeile in einer Datei habe und für jeden Newseintrag ein Array, ich wusste nicht das man so Arrays definieren kann wie in C, find ich aber cool und damit hat sich die Frage eigentlich schon beantwortet... wenn ich noch fragen hab schreib ich wieder...

MFG Christian
 
Die Lösung sähe dann so aus:
PHP:
<?php
$file = file("datei.txt");
foreach ($file as $row)
{
  $row_arr = explode('||', $row);
  foreach($row_arr as $entry){
    $news[$a][$i] = $entry;
    $i++;
  }
  $a++;
}
?>

Logisch oder? Ich werds morgen denke ich mal testen. THX!
 
Zurück