TXT-File Systematisch durchsuchen, Sprungmarken ?!

nesti71

Grünschnabel
Hallo zusammen,
wäre nett wenn mir einer bei meinem kleinen Problem helfen könnte.
Ein Programm gibt mir eine TXT-Datei aus die folgendes Muster hat:

Jeder Datensatz hat eine Zeile, die Unterschiedlichen Informationsabschnitte werden durch # getrennt

Datensatz1#info1#info2#info3#info4#info5#......
Datensatz2#info1#info2#info3#info4#info5#......
Datensatz3#info1#info2#info3#info4#info5#......
Datensatz4#info1#info2#info3#info4#info5#......
...usw...

Gibt es irgendwie eine Möglichkeit in der Datei jeweils z.B. nur den Parameter info3 zu durchsuchen um danach den Datensatz indem ein entsprechender Treffer enthalten ist in einer var zu speichern ? Irgendwie mit Sprungmarken öÄ ?!

Danke schonmal im Vorraus.
Gruß.
 
Schau dir mal die Funktion fgetcsv an.

Damit kannst du eine Datei zeilenweise in ein Arrray einlesen und angeben durch welches Zeichen die Felder getrennt sind.
 
Bin die Sache jetzt erst mal etwas simpler angegangen und habe die gesamte Datei in ein Array eingelesen, welches folgendes Muster hat:

Code:
$zeile[zeilennummer][spaltennummer]

hier der zugehörige Code:
 for($i=0; $i < count($data); $i++ )
    {
       $zeile[$i] = explode( "#", $data[$i] );
    }

Um systematischer und übersichtlicher weitermachen zu können will ich anstatt der Spaltennummer als zweiten Schlüssel sprechende Namen verwenden um nicht immer nachschauen zu müssen welche Info ich mit welcher Nummer auslesen kann.
Habe jetzt schon ewig versucht die Schlüssel mit Namen zu versehen (vorher definieren, schleife usw..)
Kann mir nochmals jemand weiterhelfen ?
Wäre nett!
 
Zuletzt bearbeitet:
Du willst ein assoziatives Array aufbauen. Die simple Frage ist, hat es wirklich einen Nutzen für Dich?

Um eine sinnvolle Antwort zu geben: Nachdem Du das Array per explode erstellt hast, speicherst Du händisch die Daten in das assoziative Array um.
PHP:
$DeinArray=array();
 for($i=0; $i < count($data); $i++ )
    {
       $zeile[$i] = explode( "#", $data[$i] );
       $DeinArray[$i]['erstesFeld']=$zeile[$i][0];
       $DeinArray[$i]['zweitesFeld']=$zeile[$i][1];
       //usw - kann auch mit for gelöst werden,
       //wenn array mit mit assoc-Namen erstellt wurde
       // Zudem könntest Du diese Schleife auch mit foreach() lösen
    }

Und hier noch eine optimierte Lösung
(wobei ich nie ganz glücklich bin, wenn ich eine quasi-fertige Lösung poste)
PHP:
$assocNamen=array('Name','Alter','telefon','email');
$DeinArray=array();

foreach($zeile as $key=>$value)
{
  $tmparray=explode('#',$value)
  foreach($tmparray as $tmpkey=>$tmpvalue)
  {
     $DeinArray[$key][$assocNamen[$tmpkey]]=$tmpvalue;
   }
}
mfg chmee
 
Danke Dir für deine Mühe!
Kann ich gut verstehen ;) Mir hilft es manchmal ungemein beim Lernen wenn ich eine Lösung vor mir hab die ich dann verstehen und mir erarbeiten kann. Aber du hast natürlich recht dass das so eigentlich nicht Sinn der Sache ist.
 
Zurück